【发布时间】:2016-01-06 14:25:54
【问题描述】:
他是交易:
我有 n fork,在 fork 我有 exec,一切都与 pipe 连接。
我的问题:
如果某个孩子做exit() 我想close 他的pipe 能够阅读。 - 这该怎么做? Waitpid 最有可能...
现在我等所有的孩子都这样:
for(i = 0; i< val; i++)
{
wait(&status);
close(fd[i][1]);
}
val - 孩子的数量。
【问题讨论】:
-
不太清楚你在问什么。如果您想在子(ren)退出时关闭通过管道建立的某些连接,那么 1)忽略 SIGPIPE(这样您的父/服务器不会退出 - SIGPIPE 的默认操作是退出) 2)查找 EPIPE 错误号。 3) 关闭返回
EPIPE的文件描述符。除了收获目的,您不需要为此目的使用 wait()。
标签: c linux select pipe waitpid