パイプラインのコマンドは同時に実行されますか? [コピー]

パイプラインのコマンドは同時に実行されますか? [コピー]

command1 | command2次のパイプラインで

  • コマンドが同時に実行されるか(つまり、同じライフサイクルを持つか)または
  • command1が終了すると、command2の実行が開始されます。または
  • 他に何かありますか?

コマンドプロセスがプロセスグループを形成していると聞いたときに私の質問がありました。ライフサイクルが異なる場合、コマンドプロセスのプロセスグループは意味がないのではないでしょうか?

ベストアンサー1

これらのプロセスはここに行く同時に同時に実行されますが、必ずしもそうする必要はありません。止める同時に。シェルは、次の場合にパイプライン全体が終了したと見なし、新しいプロンプトを表示します。両方プロセスが終了しました。

command2do前に終了するcommand1か、標準入力ストリームを閉じてから出力を書き込もうとするcommand1と、その出力はどこにも行きません。その後、デフォルトの動作はabortのcommand1信号SIGPIPEを受け取りますcommand1。ただし、command1引き続き実行されるようにこのデフォルト値を上書きできます。この場合、出力に書き込もうとすると通常のI / Oエラー(EPIPE)が生成され、必要に応じて反応することがあります。

おすすめ記事