如何丢弃子进程的stdout但是保持父进程的stdout?

时间:2015-09-24 00:38:01

标签: c linux io-redirection

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我会将父节点的stdout重定向到文件,然后当你fork时,重新打开子节点的stdout句柄去别的东西(比如/ dev / null,如果你只是想抛弃它,或者你如果你想让它回到stdout,可以再次打开终端。

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

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