2012-03-14 12 views
0

system()機能を使用して別のプログラムを起動するCプログラムを書き込みます。私は、メインプログラムが殺された場合、立ち上げられるプログラムを殺す可能性のある方法があるかどうかを知りたいと思うでしょう。私はLinuxマシン用にプログラミングしています。
例:他のプログラムによって作成されたサブプログラムを終了時に殺す

/* foo.c */ 
int main() 
{ 
    system("./blah"); 
    return 0; 
} 

関係しているものは何でもありません何とか。私がfooを殺すと、blahはまだ動いている。
死んでしまったときにfooを殺す方法はありますか?

答えて

4

シグナル処理で作業する必要があります。誰かがあなたのアプリケーションを強制終了しようとしているときを知るには、以下のドキュメントを参照してください。


  • linuxjournal.com - The Linux Signal Model

      それに加えて、あなたの生まれた プロセスの プロセスIDを知っておく必要があります。このためには、起動したプロセスを起動するために、 systemより洗練されたものを使用することをお勧めします。


      あなたは(それがpidだ使用して)生成されたを殺すために方法を知っていることもあります。

  • +0

    あなたはキャッチ/ SIGKILL(もSIGSTP、SIGCONT)を処理することはできません。 – sirgeorge

    +0

    @ sirgeorge ..あなたはそれについて私の答えを下落させたのですか、それとも単なる奇妙な偶然でしょうか?私は 'SIGKILL'について何も言わなかった。 **あなたが** SIGKILLと 'kill 'の使用を混同しているなら、あなたはそれがすべて混ざっていると言うのが悲しいです。 –

    関連する問題