command1 | command2
次のパイプラインで
- コマンドが同時に実行されるか(つまり、同じライフサイクルを持つか)または
- command1が終了すると、command2の実行が開始されます。または
- 他に何かありますか?
コマンドプロセスがプロセスグループを形成していると聞いたときに私の質問がありました。ライフサイクルが異なる場合、コマンドプロセスのプロセスグループは意味がないのではないでしょうか?
ベストアンサー1
これらのプロセスはここに行く同時に同時に実行されますが、必ずしもそうする必要はありません。止める同時に。シェルは、次の場合にパイプライン全体が終了したと見なし、新しいプロンプトを表示します。両方プロセスが終了しました。
command2
do前に終了するcommand1
か、標準入力ストリームを閉じてから出力を書き込もうとするcommand1
と、その出力はどこにも行きません。その後、デフォルトの動作はabortのcommand1
信号SIGPIPE
を受け取りますcommand1
。ただし、command1
引き続き実行されるようにこのデフォルト値を上書きできます。この場合、出力に書き込もうとすると通常のI / Oエラー(EPIPE
)が生成され、必要に応じて反応することがあります。