このスケジューラはゾンビプロセスを生成しますか?

このスケジューラはゾンビプロセスを生成しますか?

このようなスケジューラシェルスクリプトがあります。

while read line
do
    java TestProg $line &
done < $tasklist

優秀ゾンビプロセスウィキペディアページ、それは言う

親プロセスが待機呼び出しに失敗すると、ゾンビプロセスがプロセステーブルに残り、リソースリークが発生します。

上記のスクリプトはそのwait機能を使用しません(私はこのように多くのスケジューラシェルスクリプトを作成しました)。waitゾンビプロセスを防ぐためにこれを使用する必要があるかどうか疑問に思います。

while read line
do
    java TestProg $line &
done < $tasklist
wait

答え1

2つの答えがあります。

親プロセスが死亡または終了すると、そのプロセスはinitによって継承されます。 initはこれを行います。したがって、短期プロセスの場合は心配する必要はありません。waitまたはに電話することをお勧めしますexit

私はbash呼び出しが待って終了コードをどこかに置くと思います。

wait終了コードを取得し、プロセスを収集します。 Zombiは非常に少ないリソースを使用し、プロセステーブルの1スロット(プロセスIDなど)を除いてすべてのリソースが解放されます。

ゾンビが死んでいます。プロセステーブルのスロットを除くすべてのリソースが解放されます。プロセステーブルスロットが解放されない理由は、親プロセスが戻りコードを取得し、プロセスID(pid)を再利用する他のプロセスに影響を与えることなく、死んだ子プロセスにシグナルを送信できるためです。

関連情報