让我们考虑以下示例。
我有一个创建管道的父进程,生成一个子进程并使用该管道读取子进程的标准输出。在某个时候,父进程不再对子进程的输出感兴趣,并关闭管道的读取端。
显然,如果子进程继续写入,是否会导致子进程接收到 SIGPIPE
信号。
问题:有没有一种方法可以将子进程的输出重定向到/dev/null
,这样它仍然可以继续运行并产生输出,但是父进程可以继续做其他事情并调用waitpid
稍后在 child 身上?请注意,将 child 的 SIGPIPE
处理程序设置为 SIG_IGN
不是一个选项,因为我无法控制子进程的信号处理程序。
最佳答案
自己模拟 /dev/null
-- fork()
一个新进程,其工作是读取并忽略子进程的输出。
关于linux - 防止SIGPIPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302873/