трубопровод в UNIX сомневается - PullRequest
3 голосов
/ 15 апреля 2010

В среде программирования Unix от K & P написано, что
«Программы в конвейере фактически выполняются одновременно, а не одна за другой.
Это означает, что программы в конвейере могут быть интерактивными; "

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

1 Ответ

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...