可以编程知道管道链中前一个命令的返回值吗?

时间:2011-07-13 15:13:43

标签: command-line pipe

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

编辑:

如果答案是平台依赖的,那么我想知道所有平台的答案,因为这是一个纯粹的好奇心的问题。但是,POSIX机器(特别是linux)是我最常用的。

1 个答案:

答案 0 :(得分:1)

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

  • progB没有POSIX方式来确定管道另一端的progA进程的PID(虽然有依赖于系统的方法 - 在Linux上,你可以使用在大多数情况下,管道的inode编号用于查找保持另一端打开的进程,this question将帮助您入门。
  • 即使progB的PID为progA,它也无法收到退出状态,因为只有progA的父进程(在本例中可能是您​​的shell)才能{{1 }} 为了它。据我所知,没有办法解决这个限制。