2011-07-13 31 views
0

如果我有progA | progB,那么我可以制作一些progB可执行文件(使用任何语言),它将知道progA的返回码吗?可以知道管道链中前一个命令的返回值吗?

编辑:

如果答案是与平台相关的,那么我想知道所有平台的答案,因为这是纯粹出于好奇的问题。但是,POSIX机器(特别是linux)是我最常用的。

+0

我会说不可移动。我们在谈论Linux吗? POSIX?视窗? – themel

+0

请参阅编辑我的问题 –

回答

1

我很确定POSIX的答案是否定的。反对它的两个主要论点是:

  • 没有POSIX的方式为progB,以确定对管道的另一侧progA进程的PID(虽然有解决此系统相关的方式 - 在Linux上,您可以使用管道的inode号码来查找在大多数情况下保持另一端打开的进程,this question会帮助您开始)。
  • 即使progB的PID为progA,由于只有父进程progA(在这种情况下可能是您的shell)可以为wait,所以它无法接收其退出状态。据我所知,这个限制是无法解决的。