【问题标题】:can program know return value of previous command in pipe chain?程序可以知道管道链中先前命令的返回值吗?
【发布时间】:2011-07-13 15:13:43
【问题描述】:

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

编辑:

如果答案取决于平台,那么我想知道所有平台的答案,因为这是一个纯粹出于好奇的问题。但是,POSIX 机器(尤其是 linux)是我最常用的。

【问题讨论】:

  • 我想说不是便携的。我们在谈论Linux吗? POSIX?窗户?

标签: command-line pipe


【解决方案1】:

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

  • progB 没有 POSIX 方法来确定管道另一端的 progA 进程的 PID(尽管有一些与系统相关的方法 - 在 Linux 上,您可以使用管道的 inode 编号要找到在大多数情况下保持另一端打开的过程,this question 将帮助您开始)。
  • 即使progB 的PID 为progA,它也无法接收其退出状态,因为只有progA 的父进程(在这种情况下可能是您的shell)可以为它wait。据我所知,没有办法绕过这个限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多