私が知る限り、コマンドをA
コマンドにパイプするとB
実行され、A
出力がB
入力として使用されます。たとえば、一部のコマンドは無限ですが、yes
これらのコマンドの実行時間はそのコマンドを中断するまでです。配管作業はどうなりますか?
例:
yes | sudo dnf install pkg
答え1
コマンドAは無限の出力を生成できますが、コマンドBは限られた量の出力のみを読み取ります。コマンドBが終了すると(または対応する入力ファイル記述子を閉じると)、パイプは削除されます。
その後、コマンドAからパイプへの書き込みを実行すると、カーネルはSIGPIPE
コマンドAに信号を送信します。基本的な作業はSIGPIPE
プロセスを終了することです。