こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

子プロセスの管理

forkした後の子プロセス管理で、終了をsignalで管理しようと思ってるんですが、forkを2回行なえばゾンビ化を防げると書いてありました。この二つの方法に違いはあるんですか?メリット・デメリットがよくわかりません。ちなみに子プロセスからの結果や終了を待つ様なプログラムではなく、ただexec関数での別処理を行なうために子プロセスを作成するだけです。
宜しくお願いします。

投稿日時 - 2005-10-24 21:55:20

QNo.1733686

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

forkを2回というのは孫プロセスを作ってそれに作業させるということでしょうか。
この場合、子プロセスを終了させてしまうと孫プロセスの親プロセスはinitd(PID=1)になります。孫プロセスの終了時にはinitdが処理してくれるので自プロセスは何もしなくとも良いということでしょう。
# 子プロセスの終了は待たないといけないが孫プロセスの起動だけなので短時間に済む

投稿日時 - 2005-10-24 23:02:30

ANo.1

unix系OSの前提でいいんですよね。
子プロセスは、実行が終了してもその終了シグナルを親プロセスがwaitで捕まえてくれるまでゾンビ状態で残ります。forkが1回の場合は間違いなく親のほうでwaitしてやらないといけません。親が先に終わるのならしなくてもいいですが。

forkを2回ということは、子プロセスは孫を作るとすぐに終了して、実際の処理は孫プロセスがやるわけですが、孫の親である「子」が終了した時点で、孫の親はinitプロセスが引き継ぎますので、waitを行うのはinitプロセスが代行してくれます。

まあ、好き好きでどちらでもいいと思います。

投稿日時 - 2005-10-24 22:57:08

あなたにオススメの質問