たとえば、次のように実行すると:
sleep 1 & sleep 2 & sleep 3
私はすぐに次のプロセスIDを取得します。
[1] ...
[2] ...
sleep 3
次に、実行が完了するまでシェルが停止し、同時に次のものを印刷します。
[1]- Done sleep 1
[2]+ Done sleep 2
この動作を引き起こす基本的な実装が何であるか疑問に思います。
答え1
シェルの待機は、バックsleep
グラウンドのない最後のシェルによって引き起こされます。
情報
[1]- Done sleep 1
[2]+ Done sleep 2
通常、印刷は便利な時間に行われ、ほとんどのメッセージが表示されたときに行われます。努力する
sleep 3 &
そして10まで数える。出力は生成されません。ただし、Enterキーを押すと新しいプロンプトが表示され、その前にメッセージが表示されますDone
。
これはあなたが経験しているのと同じ状況です。