好的,所以我有一个问题。 我必须使用execlp
获取程序的输出,并使输出直接转到文件。 问题是程序只输出某些信息,如果它运行在一个tty,(我想它叫做isatty(3)
)。 这是我的代码到目前为止
void main(){ int fd = open("file", O_WRONLY | O_CREAT | O_TRUNC, 0755); close(1); dup(fd); execlp("program","program",NULL); close(fd); }
我不想使用操作系统命令,如script
(工作)等。
所以问题是,我怎么能“欺骗”程序,认为它正在写入一个tty?
使用“pty”(伪终端)作为输出。 看到这个问题的细节。
Rachid Koucha写了一篇很长的文章解释了如何使用ptys的细节: 使用伪终端(pty)来控制交互式程序
停止阅读这里的文本只是为了阻止愚蠢的SO算法,把我的答案变成一个评论。 当软件比我更聪明时,我讨厌它:-(