linux-防止SIGPIPE

让我们考虑以下示例.

我有一个父进程,该进程创建一个管道,产生一个子代,并使用该管道读取子代的标准输出.在某些时候,父进程不再对子进程的输出感兴趣,并关闭管道的读取端.

显然,如果孩子继续写作,这将导致孩子进程收到SIGPIPE信号.

问题:是否有一种方法可以将子级的输出重定向到/ dev / null,使其仍然保持运行并产生输出,但是父进程可以继续执行其他操作,稍后再对子级调用waitpid?请注意,将子级的SIGPIPE处理程序设置为SIG_IGN是不可选项,因为我无法控制子级的信号处理程序.

解决方法:

自己模拟/ dev / null-fork()一个新进程,其工作是读取和忽略子级的输出.

上一篇:都说衣不如新人不如故,技术是学新不学旧的?IPC+view+Handler+线程。


下一篇:在Linux编程中通过管道在进程之间发送链表结构的最佳方法是什么