让我们考虑以下示例.
我有一个父进程,该进程创建一个管道,产生一个子代,并使用该管道读取子代的标准输出.在某些时候,父进程不再对子进程的输出感兴趣,并关闭管道的读取端.
显然,如果孩子继续写作,这将导致孩子进程收到SIGPIPE信号.
问题:是否有一种方法可以将子级的输出重定向到/ dev / null,使其仍然保持运行并产生输出,但是父进程可以继续执行其他操作,稍后再对子级调用waitpid?请注意,将子级的SIGPIPE处理程序设置为SIG_IGN是不可选项,因为我无法控制子级的信号处理程序.
解决方法:
自己模拟/ dev / null-fork()一个新进程,其工作是读取和忽略子级的输出.