ゾンビプロセスは収穫のために「待機」する必要はありません。

ゾンビプロセスは収穫のために「待機」する必要はありません。

子プロセスが正しい収穫を得ることができない場合、ゾンビになることを知っています。psコマンドを使用すると、これを表示できます。

また、「wait [pid]」コマンドは、サブシェルが完了してインポートされるまでバックグラウンドで実行されるサブシェルを待ちます。

次のスクリプトがあります。

#!/bin/bash
sleep 5 &

tail -f /dev/null

wait私の質問は、私はafterを使わずにsleep 5 &親シェルが決して終了しないということですtail。それではなぜsleep 5 &ゾンビにならないのですか?全て作ってから消えるのを見たのですがps、誰が収穫したのか気になります。

ベストアンサー1

これは、オペレーティングシステムAPIを模倣するためにシェルを使用する際のトラップの1つです。それは混乱を引き起こします。このような場合は混乱します。待つ()(Linux API)待つ(バッシュ機能)。

簡単です。 Bashは収集プロセスを処理するので、一般的にそれについて考える必要はありません。 bash コマンドはwait収集プロセスには影響しません。

子ジョブが終了すると、bash が渡されます。SIGCHLD信号。これが発生すると、bashは実行中のすべての操作を停止し、停止した子を収集します。それからやったことに戻ります。

おすすめ記事