使用 Ttyutils 截获 UNIX/Linux 终端
2008-09-23 08:23:44 来源:WEB开发网核心提示: 对于伪终端从设备之上的用户进程来说,其标准输入、标准输出和标准出错都能当作终端设备使用,使用 Ttyutils 截获 UNIX/Linux 终端(10),用户进程能够调用所有输入 / 输出函数,虚拟终端 当 ttyexec 从伪终端主设备接收到数据后,可以实时的跟踪屏幕的变化,并且根据当前
对于伪终端从设备之上的用户进程来说,其标准输入、标准输出和标准出错都能当作终端设备使用。用户进程能够调用所有输入 / 输出函数。
虚拟终端
当 ttyexec 从伪终端主设备接收到数据后,这些数据是原始的 Escape 序列,它还需要传递给内置的 Escape 解析器,最后在内存中构造一个和屏幕上相同的虚拟终端。
注意虚拟终端,伪终端和实际终端之间的区别,下面的图描述了它们之间的关系:
图 2 ttyexec 内部关系
当使用 ttyexec 执行其它命令时, ttyexec 实际上拥有了两个终端设备,一个是继承于 shell 的实终端 ( 也可能是伪终端,例如在终端仿真程序中运行 ttyexec),另外一个是 ttyexec 建立的伪终端,后者将被 ttyexec 执行的命令使用。
当在使用 ttyadmin 时,得到的输出中有一栏名为 TTY,还有一栏名为 PTS,分别指的就是上面的实终端和伪终端。
ttyexec 拥有两个终端设备,其中伪终端被用于执行的命令,因为伪终端的一端的输出将会是另一端的输入,也就是说,被 ttyexec 执行的命令的所有输出将是 ttyexec 的输入,所以, ttyexec 截获了被执行的命令的全部终端输出。
同样,因为用户从真实终端的数据要通过 ttyexec 转发到伪终端上执行的命令,所以 ttyexec 也截获了用户的所有输入,并且可以模拟用户的输入发送数据到伪终端,这可以用于自动填充数据这样的场合。
通过虚拟终端在内存中重构一个终端屏幕,可以实时的跟踪屏幕的变化,并且根据当前屏幕的特征来触发事件,完成特定的事情。
更多精彩
赞助商链接