使用 Ttyutils 截获 UNIX/Linux 终端
_stdout: 悬挂 / 恢复实终端标准输出; insert/remove_event: 添加 / 删除事件表中的事件; 下面用一个例子描述如何编写一个 C 程序来使用上面提供的 feed 服务,包括从源代码编写到编译,连接完整的步骤. #include <ttyutils.h> int if (!t_init ()) target.rt_timeout = 3; if (!t_rpc_call_set_target (&target)) if (!t_rpc_call_feed ("hello", 5)) t_uninit ();
将上面的代码保存到文件 example.c,然后到用下面的命令编译它 : $ cc -o example example.c `pkg-config --cflags --libs ttyutils-1`
第 1 行包含了头文件 <ttyutils.h>,这是每个外挂程序应该做的. 第 6 行声明了一个 TRpcTarget 结构的变量,这个结构描述如下 : typedef enum typedef struct _TRpcTarget TRpcTarget; 注意 ttylook 不理睬在 socket 之间传送的数据内容,这些数据直接被写到用户终端屏幕,如果运行 ttyexec 和 ttylook 的终端类型不同,那么可能会出现屏幕的内容错乱. 发送数据给 ttyexec ttylook 在启动时,会将用户终端的标准输入 ( 键盘 ) 至于关闭回显模式,这样,用户在终端上的输入在屏幕上是不可见的. 但是 ttylook 会得到这些输入数据,然后将这些数据传送给 ttyexec,ttyexec 会将这些数据作为用户的输入写到被监控的进程,这就好像运行 ttyexec 的用户输入了数据一样. 实现 ttyadmin 当 ttyexec 启动的时候,它会将它自身的信息注册到一个系统区域,称为黄页,这个黄页是用一片共享内存实现的,ttyexec 注册的信息包括它的进程 ID,终端和伪终端名称,lookd 服务和 rpcd 服务帮定的地址,等等,每个 ttyexec 在黄叶中占据一项. 当 ttyexec 退出的时候,它会将自身的注册信息从黄页中删除. Ttyadmin 主要是管理这个黄页的程序. 查看 ttyexec 实例 在 ttyadmin 启动时,它建立一个全屏幕的窗口,然后查询黄页,得到当前系统中所有 ttyexec 实例的注册信息,并将这些数据缓存到自己的内部表中. 然后它格式化得到的信息,显示在主窗口中. 后续的所有操作 ( 例如排序 ) 都是基于这个内部表,但是允许用户去重读黄页 ( 当前的实现是按下空格键或者设定一个更新超时 ). 管理 ttyexec 实例 ttyadmin 提供了对 ttyexec 的管理能力,这些能力可以在运行 ttyadmin 时通过帮助获得,这里要说明的是,这些管理功能主要是基于黄页中的信息. 虽然 ttyadmin 可以查看和管理 ttyexec,但是它和 ttyexec 没有直接的关系. ttyexec 也为 ttyadmin 提供了一些管理功能 ( 例如查询事件表的内容 ),这是通过 ttyexec 的 RPC 服务实现的,在这种情况下,ttyadmin 只能算是 ttyexec 的一个 RPC 客户端. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |