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

Ale*_*cia 3 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);
}
Run Code Online (Sandbox Code Playgroud)

我不想使用像script(工作)等操作系统命令.

所以问题是,我怎么能"欺骗"程序认为它正在写入tty?

Aar*_*lla 6

使用"pty"(伪终端)作为输出.有关详细信息,请参阅此问

Rachid Koucha撰写了一篇冗长的文章,解释了如何使用ptys的详细信息:使用伪终端(pty)来控制交互式程序

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