
我讀到了有關管道和流的內容,但我仍然對它的實現方式感到困惑。
程式啟動並從“標準輸入”流(stdin)讀取數據,這是鍵盤發送數據的地方。
我的問題是,它與管道有什麼不同?管道允許我有一個進程將資料發送到管道,另一個進程正在從中讀取資料。
當按下鍵盤時,資料被發送到標準輸入,並且程式正在從同一流中讀取資料。
一旦資料發送到該流,就會執行“讀取”操作,就像管道一樣。
這些流是透過管道傳輸的嗎?
答案1
答案2
從技術角度來看,這可能並不完全準確,但可能會幫助您解決困惑。我傾向於將流視為程式固有的東西,例如 STDIN、STDOUT 和 STDERR,而管道是程式外部的。例如,在 command 中cat foo.txt | grep bar
,cat
命令會傳送到其固有的 STDOUT,然後外部管道將其連接到grep
的固有 STDIN。