3

好的,所以我有一个问题。我必须使用 获取程序的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?

4

1 回答 1

6

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

Rachid Koucha 写了一篇长文解释如何使用 ptys:使用伪终端 (pty) 控制交互式程序

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

于 2012-11-12T14:47:34.337 回答