• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:httpdの子プロセスがゾンビ化する原因)

httpdの子プロセスがゾンビ化する原因とは?

このQ&Aのポイント
  • httpdの子プロセスがゾンビ化する原因について教えてください。
  • httpdの子プロセスがゾンビ化する原因を具体的に教えてください。
  • httpdの子プロセスがゾンビ化する原因について、一般的な事例を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

ゾンビプロセス一般について書きます。 ゾンビプロセスとは、プロセスの実体は無いが、プロセステーブル(カーネルがプロセスを管理してる台帳)に エントリーがある状態を指します。 名簿に名前があるけど、本人は居なくなっちゃってる、と。 あるプロセスが終了したときには、必ず一瞬でもこの状態になります。 通常は、プロセスが終了したというシグナルが親プロセスに通知され、親プロセスが後始末を してあげて、めでたくゾンビ状態ではなくなるのです。 もし、親がシグナルを受けたときに適切な処理を行っていなければ、親プロセスが終了するか システムが再起動するまで、ゾンビ状態のままです。 > このゾンビ化してしまう原因として考えられるものを教えて下さい。 子プロセスからのシグナルを受けたときの処理がまずい、のが原因です。

tomo_t_21
質問者

お礼

自力で調べた中にもシグナルについて触れてある資料はあったのですが、いま一つ頭の中で 整理しきれていなかったんです。 この回答を読んで、ようやくはっきりしました。ありがとうございました。 ところで、 > もし、親がシグナルを受けたときに適切な処理を行っていなければ、親プロセスが終了するか > システムが再起動するまで、ゾンビ状態のままです。 とのことですが、親プロセスを終了させれば、ゾンビとなった子プロセスは必ず全て 終了されるものなのでしょうか? もし宜しければ教えて下さい。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> とのことですが、親プロセスを終了させれば、ゾンビとなった子プロセスは必ず全て > 終了されるものなのでしょうか? 私は、そのように理解していますが、これは確約されたことではなく、その unix の実装(と、障害)次第、となります。 また、setsid() を使ってプロセスグループを親と別にしてしまったプロセスが、もしも Zombie に なった場合(まず、ならない、と思いますが)には、親プロセスの終了は意味が無い(と思う)。 私も、知識の整理をかねて Web をうろうろしていたら、Solaris9 には preap なるコマンドがあって、 お掃除をしてくれそう。 # 収穫、収穫 :-)

参考URL:
http://docs.sun.com/db/doc/816-0210/6m6nb7mi1?l=ja&q=preap&a=view
tomo_t_21
質問者

お礼

確かに、仮にプロセスグループが異なっているとしたら、親プロセスの停止は子プロセスに 関係ありませんね。 具体的に事例を提示して頂き、とても判りやすかったです。 私の使用している Solaris8 では、残念ながら preap コマンドはまだ実装されていないようですが、 今後の参考にさせて頂きます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう