Pipe

我們如何通過管道傳遞無窮無盡的命令,比如 yes?

  • January 8, 2021

據我所知,管道命令A到命令B將執行A並將其輸出B作為輸入。雖然有些命令是無止境的,比如yes,因此這些命令的執行時間是直到我們破壞它們為止。管道如何為他們工作?

例子 : yes | sudo dnf install pkg

儘管命令 A 可能會產生無窮無盡的輸出,但命令 B 只會讀取有限數量的輸出。當命令 B 退出(或關閉其輸入文件描述符)時,管道將被破壞。

之後,命令 A 對管道的任何寫入都會導致核心向SIGPIPE命令 A 發送信號。 的預設操作SIGPIPE是終止程序。

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