0
如果我有progA | progB
,那么我可以制作一些progB可执行文件(使用任何语言),它将知道progA
的返回码吗?可以知道管道链中前一个命令的返回值吗?
编辑:
如果答案是与平台相关的,那么我想知道所有平台的答案,因为这是纯粹出于好奇的问题。但是,POSIX机器(特别是linux)是我最常用的。
如果我有progA | progB
,那么我可以制作一些progB可执行文件(使用任何语言),它将知道progA
的返回码吗?可以知道管道链中前一个命令的返回值吗?
编辑:
如果答案是与平台相关的,那么我想知道所有平台的答案,因为这是纯粹出于好奇的问题。但是,POSIX机器(特别是linux)是我最常用的。
我很确定POSIX的答案是否定的。反对它的两个主要论点是:
progB
,以确定对管道的另一侧progA
进程的PID(虽然有解决此系统相关的方式 - 在Linux上,您可以使用管道的inode号码来查找在大多数情况下保持另一端打开的进程,this question会帮助您开始)。progB
的PID为progA
,由于只有父进程progA
(在这种情况下可能是您的shell)可以为wait
,所以它无法接收其退出状态。据我所知,这个限制是无法解决的。
我会说不可移动。我们在谈论Linux吗? POSIX?视窗? – themel
请参阅编辑我的问题 –