Для [114055]prog2[114056] нет прямого способа получить статус выхода из [114057]prog1[114058] или даже узнать, что [114059]prog1[114060] вышла из программы. Всё, что может знать [114061]prog2[114062], это то, что [114063]prog1[114064] закрыла свой конец трубы, что она может сделать, не умирая.
Если вы хотите получить статус выхода [114065]prog1[114066] из [114067]prog2[114068], есть два общих метода: вы можете записать его в файл, или отправить через трубу. Возможна отправка статуса выхода как последней строки данных трубопровода. Вы должны убедиться, что не обрабатываете последнюю строку, пока не узнаете, что это последняя строка, т.е. пока не попытаетесь прочитать следующую строку.
Вот пример, где справа расположен текстовый фильтр, окрашивающий каждую строку, содержащую слово "ошибка", в красный цвет. Если левая сторона не работает, правая выходит с тем же самым статусом.
Оказывается, у меня было нулевое свободное дисковое пространство на ПК, который давал неприятности! Может быть, это слишком специфично, но я собираюсь оставить это здесь в любом случае, если кто-то еще бежит в подобную проблему.