【ゾンビプロセス】
ゾンビプロセス とは?
最終更新:
💡 実行は終了。終了情報の回収を待っている状態
終了した子プロセスについて、親などが終了情報を回収するまで、PIDや終了状態などの最小限の情報が残っている状態。実行中のプロセスではないが、カーネルのプロセステーブルの枠を使う。
📌 このページのポイント
終了したのに、何が残っているの?
Linuxでは、親などが子の終了情報を取得できるよう、PIDや終了状態、資源使用量などの最小限の情報を残すよ。終了した子の情報がwait系の処理で回収されていない状態をゾンビというんだ。
CPUやメモリを使い続けるの?
どうやって見つけるの?
killすれば消える?
プログラムではどう防ぐの?
子の終了情報をwait()やwaitpid()などで回収するよ。複数の子が終わり得るなら、回収できる子を繰り返し処理し、戻り値やエラーも扱う。親が終了するとinitやsubreaperへ引き取られる仕組みもあるけれど、親側の回収処理を設計するのが基本だね。
まとめ:ざっくりこれだけ覚えればOK!
「ゾンビプロセス」って出てきたら「実行は終わったが、終了情報の回収待ちで残る状態」と思えばだいたいOK!
📖 おまけ:英語の意味
「Zombie Process」 = 終了後も情報が残るプロセス
💬 実行は終わっているのに、情報が残っている姿をゾンビになぞらえた呼び方だよ。動き続けているという意味ではないんだ。