我们如何能够像 yes 一样传输无穷无尽的命令?

我们如何能够像 yes 一样传输无穷无尽的命令?

据我所知,管道命令A到命令B将执行A并将其输出作为B输入。虽然有些命令是无限的,例如yes,因此这些命令的执行时间是直到我们中断它们为止。他们的管道工作如何?

例子 : yes | sudo dnf install pkg

答案1

尽管命令 A 可能会产生无穷无尽的输出,但命令 B 只会读取有限数量的输出。当命令 B 退出(或关闭其输入文件描述符)时,管道将被破坏。

此后,从命令 A 到管道的任何写入都会导致内核SIGPIPE向命令 A 发送信号。默认操作SIGPIPE是终止进程。

相关内容