我正在 Linux 中编写一个 C 程序并使用 fork
创建一个子进程。当我使用 ./test 1 > out.txt
运行我的程序时,父进程和子进程都将信息发送到 stdout
。
我希望文件 out.txt
只包含父进程的输出并丢弃子进程的所有输出。
我该怎么做?
最佳答案
我会将父级的 stdout 重定向到文件,然后当您 fork 时,重新打开子级的 stdout 句柄以转到其他内容(例如/dev/null,如果您只想放弃它,或者您可以打开终端如果您希望它返回到标准输出,请再次输入)。
dup2
系统调用可以做到这一点。 打开
一个新的,关闭
旧的,然后dup2
新的文件描述符到旧的数字(1代表stdout)。
顺便说一句,这是 shell 本身用来重定向到文件的过程。
关于c - 如何丢弃子进程的标准输出但保留父进程的标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751594/