【发布时间】:2011-10-26 04:15:42
【问题描述】:
distinguish stdout from stderr on pipe
因此,与上面的链接相关,我有一个正在执行 tail 的孩子,而父母正在通过 pipe 读取它的输出。
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO);
我的问题是,如果 tail 以某种方式失败,我正在读取的管道会发生什么情况?我在stderr 上能得到什么吗? tail 会自行终止吗?或者它可能会挂在那里defunct?
【问题讨论】:
-
由于它们被复制了,我认为关闭一个的孩子也会关闭另一个,导致后续写入另一个失败。父级将获得文件结尾。但我不是 100% 确定。
-
@wberry:实际上,关闭是您可以对复制的文件描述符执行的一件事,并且不会影响它的其他别名。