dポイントプレゼントキャンペーン実施中!

タイトルの通りなのですが、プロセスAから
fork()で子プロセスBを作り、Bには無限ループで処理をさせます。
Aはユーザからの入力を受け、処理を行います。
Aが終了要求をされプロセスを終了するときに、
Bも同時に終了したいのですが、BからAの生存を判定して
Aのプロセスが切れていたBも終了する、ということは可能でしょうか?
Bの無限ループ処理では、ファイルの書き換えを行っているので
AからBのPIDを指定してKillする、ということはせずに
B自身で判定して終了するようにしたいのですが。。

A 回答 (2件)

>その場合、子プロセスはゾンビプロセスとなってしまいますか?



なりません。initは、子プロセスが終了すると、waitを呼び出して、子プロセスが、ゾンビになることを防止します。
    • good
    • 0
この回答へのお礼

大変よくわかりました!

どうもありがとうございました。

お礼日時:2005/06/08 13:15

getppid()を呼び出して下さい。


当該プロセスの親プロセスのプロセスIDが返ります。
戻り値が1の時、親プロセスは存在しません。
プロセスID=1は、initプロセス(デーモン)であり
、これは、親プロセスが消滅したために、親プロセスに成り代わって、initが、親プロセスの肩代わりをしていることを示しています。

この回答への補足

ありがとうございます。

なるほど。getppid()の戻り値が1なら生存判定が
できるのですね。

その場合、子プロセスはゾンビプロセスとなってしまいますか?

補足日時:2005/06/08 11:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!