2010-04-15 3 views
3

In The Unix среда программирования с помощью K & P, написано, что
"Программа в трубопроводе реально работать одновременно, а не один за другим.
Это означает, что программы в трубопроводе может быть интерактивным;трубопроводов в UNIX сомневаются

Как можно запускать программы одновременно?
Для: $ who | grep mary | wc -l
Как будет выполняться grep mary до тех пор, пока кто не будет запущен или как wc -l будет выполняться до тех пор, пока он не будет знает результаты предыдущих программ?

ответ

7
  • Все три программы начнутся. Grep и туалет ждать ввода с помощью стандартного ввода
  • who выведет на экран строку данных, которая grep тогда получит
  • Если соответствует линия, Grep будет записать его stdout, который wc будет читать и считать
  • В Тем временем, who также может быть выписывать больше данных для grep и т.д.

Каждая программа нуждается в результаты предыдущего, но это не нужно все результатов, прежде чем он может старт рабочий, поэтому конвейерная обработка возможна.

Смежные вопросы