创build一个文件作为tty与dup

好的,所以我有一个问题。 我必须使用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算法,把我的答案变成一个评论。 当软件比我更聪明时,我讨厌它:-(