2010-04-15 45 views
3

在用K & P中的Unix的編程環境,它被寫
「在流水線的程序在同一時間實際運行,而不是一個接一個。
這意味着,在管道項目可以互動;「管道在UNIX懷疑

程序如何同時運行?
例如:$ who | grep mary | wc -l
grep mary將如何執行,直到誰運行或wc -l將如何執行,直到它 知道以前程序的結果?

回答

7
  • 所有三個程序都將啓動。 grep和WC通過stdin等待輸入
  • who將輸出線的數據,然後這grep將接收
  • 如果線路相匹配,grep的將其寫入stdout,這wc然後將讀取和計數
  • 在同時,who也可能已經寫了更多的數據grep

每個程序都需要前一個的結果,但在此之前它可以它不需要結果所有開始工作,這就是流水線可行的原因。