Может ли программа знать возвращаемое значение предыдущей команды в цепочке конвейеров? - PullRequest
0 голосов
/ 13 июля 2011

Если у меня есть progA | progB, тогда я могу сделать исполняемый файл progB (на любом языке), который будет знать код возврата progA?

РЕДАКТИРОВАТЬ:

если ответзависит от платформы, тогда я хотел бы знать ответы для всех платформ, так как это вопрос из любопытства.Тем не менее, POSIX-машины (в частности, linux) - это то, чем я пользуюсь чаще всего.

1 Ответ

1 голос
/ 14 июля 2011

Я почти уверен, что ответ POSIX - нет Два главных аргумента против этого:

  • нет способа POSIX для progB определить PID процесса progA на другой стороне канала (хотя есть обходные пути, зависящие от системы - в Linux вы можете использовать номер инода канала чтобы найти процесс, поддерживающий другой конец в большинстве случаев, этот вопрос поможет вам начать работу.
  • , даже если progB имеет PID progA, он не может получить свой статус выхода, поскольку только родительский процесс progA (в данном случае, вероятно, ваша оболочка) может wait для него. Насколько я могу судить, обойти это ограничение невозможно.
...