【问题标题】:Make a file to act as tty with dup使用 dup 创建一个文件作为 tty
【发布时间】:2012-11-12 14:40:18
【问题描述】:

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

【问题讨论】:

标签: c linux posix pipe


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多