【问题标题】:How to discard stdout of child process but keep stdout of parent process?如何丢弃子进程的标准输出但保留父进程的标准输出?
【发布时间】:2015-09-24 00:38:00
【问题描述】:

我正在Linux中编写一个C程序并使用fork创建一个子进程。当我使用./test 1 > out.txt 运行我的程序时,父进程和子进程都会向stdout 发送信息。

我希望文件out.txt 仅包含父进程的输出并丢弃子进程的所有输出。

我该怎么做?

【问题讨论】:

    标签: c linux io-redirection


    【解决方案1】:

    我会将父级的标准输出重定向到该文件,然后当您分叉时,重新打开子级的标准输出句柄以转到其他内容(例如 /dev/null 如果您只想放弃它,或者您可以打开终端如果您希望它返回到标准输出,请再次)。

    dup2 系统调用可以做到这一点。 open 一个新的,close 旧的,然后dup2 新的文件描述符到旧的编号(1 表示标准输出)。

    这是 shell 本身用来重定向到文件 btw 的过程。

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2010-10-29
      • 2011-08-29
      • 2012-05-28
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      相关资源
      最近更新 更多