如果我有progA | progB
,那么我可以制作一些progB可执行文件(使用任何语言),它将知道progA
的返回码吗?
编辑:
如果答案是平台依赖的,那么我想知道所有平台的答案,因为这是一个纯粹的好奇心的问题。但是,POSIX机器(特别是linux)是我最常用的。
答案 0 :(得分:1)
我很确定POSIX的答案是否定的。反对它的两个主要论点是:
progB
没有POSIX方式来确定管道另一端的progA
进程的PID(虽然有依赖于系统的方法 - 在Linux上,你可以使用在大多数情况下,管道的inode编号用于查找保持另一端打开的进程,this question将帮助您入门。progB
的PID为progA
,它也无法收到退出状态,因为只有progA
的父进程(在本例中可能是您的shell)才能{{1 }} 为了它。据我所知,没有办法解决这个限制。