параллель - макс.-procs 4 эха::: {1.. 4} не производит вывода?

[113558] Общий ответ - нет. Возможно, что [114041]prog2[114042] выйдет еще до того, как [114043]prog1[114044] даже начнется (очевидно, этого не произойдет, если [114045]prog2[114046] на самом деле прочитает какой-нибудь входной сигнал, что вы и ожидали бы от него, если бы он использовался в трубопроводе). Определённо возможно, что [114047]prog2[114048] выйдет раньше [114049]prog1[114050]; это происходит, например, когда [114051]prog2[114052] - поисковая программа, которая выходит, как только найдёт совпадение, и в этом случае [114053]prog1[114054], возможно, ещё не закончила выдачу всех данных.

Для [114055]prog2[114056] нет прямого способа получить статус выхода из [114057]prog1[114058] или даже узнать, что [114059]prog1[114060] вышла из программы. Всё, что может знать [114061]prog2[114062], это то, что [114063]prog1[114064] закрыла свой конец трубы, что она может сделать, не умирая.

Если вы хотите получить статус выхода [114065]prog1[114066] из [114067]prog2[114068], есть два общих метода: вы можете записать его в файл, или отправить через трубу. Возможна отправка статуса выхода как последней строки данных трубопровода. Вы должны убедиться, что не обрабатываете последнюю строку, пока не узнаете, что это последняя строка, т.е. пока не попытаетесь прочитать следующую строку.

Вот пример, где справа расположен текстовый фильтр, окрашивающий каждую строку, содержащую слово "ошибка", в красный цвет. Если левая сторона не работает, правая выходит с тем же самым статусом.

2
13.03.2015, 19:15
1 ответ

Оказывается, у меня было нулевое свободное дисковое пространство на ПК, который давал неприятности! Может быть, это слишком специфично, но я собираюсь оставить это здесь в любом случае, если кто-то еще бежит в подобную проблему.

1
27.01.2020, 22:21

Теги

Похожие вопросы