我使用fork()和execvp()来生成一个进程必须认为它被连接到一个交互式终端用于其正常工作。
一旦产生了,我想捕获所有来自过程的输出,以及能够发送输入的过程。
我怀疑伪ttys中可能有助于在这里。 有没有人对如何做到这一点的一个片段?
我使用fork()和execvp()来生成一个进程必须认为它被连接到一个交互式终端用于其正常工作。
一旦产生了,我想捕获所有来自过程的输出,以及能够发送输入的过程。
我怀疑伪ttys中可能有助于在这里。 有没有人对如何做到这一点的一个片段?
您要拨打forkpty()。 从手册页:
的#include <pty.h> / *对于openpty和forkpty * /
将为pid_t forkpty(INT * amaster,字符*名称,结构的termios * termp,结构使用winsize * WINP);
链接与-lutil。
所述forkpty()函数结合openpty(),叉(),和login_tty()来创建在一个伪终端操作的新方法。 伪端子的主侧的文件descrip- TOR返回在amaster,并且在名称从属的文件名,如果它不是NULL。 的termp和WINP参数,如果不为空,将确定伪终端的从属侧的终端属性和窗口大小。
这就是所谓的主伪终端设备 - 通过读取并从forkpty专卖店在“amaster”文件描述符写你的父进程谈判的孩子。 孩子刚谈话stdin和stdout,其被连接到该从属伪终端设备。
预计用于通过Tcl使用已经提到,但它也可以通过将其视为一个C库和调用API不需要Tcl使用这里记录
有一个叫“期望”,你应该使用包。 它使用一种脚本语言叫做TCL(发音挠痒痒)。
http://expect.nist.gov