Shell

是否echo -n |... 向管道發送 EOF?

  • December 19, 2020

是否echo -n | ...向管道發送 EOF?IE,

echo -n | sth

sth在其標準輸入上收到 EOF 嗎?

文件或流中沒有表示為數據的 EOF。它只是與文件描述符相關的狀態。

當回顯終止時(幾乎立即終止),管道的寫入端關閉。

下一次sth讀取(假設它已經讀取了之前寫入文件的所有數據)管道狀態更改為 EOF,並且發出的讀取sth返回 EOF 條件。該過程可以繼續進行所需的任何處理,只是無法從管道中讀取任何內容。

是的。當寫入管道的程序關閉寫入端時,從管道讀取的程序會在管道上看到文件結尾。更準確地說,文件結束事件發生在管道上打開的最後一個文件描述符關閉時。關閉文件描述符的方法包括顯式關閉和程序退出。

這裡只有一個程序寫入管道並執行echo -n,這取決於 shell 要麼寫入-n和換行符,要麼什麼都不寫。當該程序完成寫入並退出時,管道的寫入端關閉,因此sth在管道上看到 EOF。(也有可能 shell 在沒有分叉的情況下執行管道的左側,在這種情況下,shell 在完成寫入時會顯式關閉管道:這種優化對管道的右側沒有任何影響.)

引用自:https://unix.stackexchange.com/questions/610406