Pipe
我們如何通過管道傳遞無窮無盡的命令,比如 yes?
據我所知,管道命令
A
到命令B
將執行A
並將其輸出B
作為輸入。雖然有些命令是無止境的,比如yes
,因此這些命令的執行時間是直到我們破壞它們為止。管道如何為他們工作?例子 :
yes | sudo dnf install pkg
儘管命令 A 可能會產生無窮無盡的輸出,但命令 B 只會讀取有限數量的輸出。當命令 B 退出(或關閉其輸入文件描述符)時,管道將被破壞。
之後,命令 A 對管道的任何寫入都會導致核心向
SIGPIPE
命令 A 發送信號。 的預設操作SIGPIPE
是終止程序。