据我所知,管道命令A
到命令B
将执行A
并将其输出作为B
输入。虽然有些命令是无限的,例如yes
,因此这些命令的执行时间是直到我们中断它们为止。他们的管道工作如何?
例子 :
yes | sudo dnf install pkg
答案1
尽管命令 A 可能会产生无穷无尽的输出,但命令 B 只会读取有限数量的输出。当命令 B 退出(或关闭其输入文件描述符)时,管道将被破坏。
此后,从命令 A 到管道的任何写入都会导致内核SIGPIPE
向命令 A 发送信号。默认操作SIGPIPE
是终止进程。