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?
使用"pty"(伪终端)作为输出.有关详细信息,请参阅此问
Rachid Koucha撰写了一篇冗长的文章,解释了如何使用ptys的详细信息:使用伪终端(pty)来控制交互式程序
停止阅读这里的文本只是为了阻止愚蠢的SO算法将我的答案变成评论.当软件比我更聪明时,我讨厌它:-(