创建一个文件以使用dup作为tty

时间:2012-11-12 14:40:19

标签: c linux posix pipe

好的,我有问题。我必须使用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?

1 个答案:

答案 0 :(得分:6)

使用“pty”(伪终端)作为输出。 see this question了解详情。

Rachid Koucha撰写了一篇冗长的文章,解释了如何使用ptys的详细信息:Using pseudo-terminals (pty) to control interactive programs

停止阅读这里的文字只是为了阻止愚蠢的SO算法将我的答案变成评论。当软件比我更聪明时,我讨厌它: - (