WEB开发网
开发学院操作系统Linux/Unix 使用 Ttyutils 截获 UNIX/Linux 终端 阅读

使用 Ttyutils 截获 UNIX/Linux 终端

 2008-09-23 08:23:44 来源:WEB开发网   
核心提示: 第 15 到 19 行调用 t_rpc_call_set_target() 函数,它用我们上面设置好的 target 结构体作为参数,使用 Ttyutils 截获 UNIX/Linux 终端(9),t_println() 是一个调试用的函数,当编译程序时定义了 DEBUG 或者 T_DEB

第 15 到 19 行调用 t_rpc_call_set_target() 函数,它用我们上面设置好的 target 结构体作为参数。

t_println() 是一个调试用的函数,当编译程序时定义了 DEBUG 或者 T_DEBUG 时,它的功能和 printf() 类似,当没有定义上面的两个宏时,它不生成任何代码。

第 21 到 25 行调用函数 t_rpc_call_feed (),这个函数访问 ttyexec 提供的 feed 服务,它的作用是发送一些数据到 ttyexec 作为标准输入。

g_warning() 是 glib 提供的一个函数,它的作用是输出一条警告消息。

第 27 行调用 t_uninit() 函数,它的作用是释放资源,应该在程序退出之前调用。

Ttyutils 内部原理描述

前面描述了如何使用 ttyutils 软件包中的程序来监控终端的会话,读者可能好奇它的内部是如何工作的,这一部分将描述这些内容。

实现 ttyexec

ttyexec 是一个监控程序,它通过建立一个伪终端来运行一个应用程序,从而达到监控那个应用程序的目的。所以,要理解 ttyexec 的实现,必须理解伪终端。

伪终端

伪终端这个名词暗示它是一个虚拟的终端,应用程序可以将其作为一个终端设别使用,但是它不是一个真实的终端,一个伪终端由两端构成,分别称为伪终端主设备和从设备,任何写到伪终端主设备的输入都会作为从设备端的输入,反之亦然。事实上所有从设备端的输入都来自于主设备上的用户进程。这看起来就像一个流管道,但从设备上的终端行规程使我们拥有普通管道之外的其他处理能力。

文件 /dev/ptmx 是一个字符设备,它用来建立伪终端主从设备。

截获进程输入输出

ttyexec 通过建立一个伪终端,然后调用 fork。子进程建立了一个新的对话,打开一个相应的伪终端从设备,将它复制成标准输入、标准输出和标准出错,然后调用 exec。伪终端从设备成为子进程的控制终端。

上一页  4 5 6 7 8 9 10  下一页

Tags:使用 Ttyutils 截获

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接