2011-11-08 18 views
0

私は2つのプログラムを持っています。 "MAN"と呼ばれる最初のものは、何らかの方法で終了するまでバックグラウンドで実行されるプロセスである "D"(2番目のもの)を起動します。子プロセスから受け取ったSIGINT

しかし私は、とき、今私はDが実行し続けることを望む、私はCtrl + Cを使用してMANを終了しようとすると、それは(私がSIGINTシグナルを傍受)正しく男を終了D.

を終了せずMANを終了したいと思いますMANはCTRL + Cを受け取り、Dもそれを受け取ります。

このような状況を処理するにはどうすればよいですか? Dのみを実行してCTRL + Cで終了することが重要です。問題は、MANを介して実行するときに発生します.CTRL + Cを使用して終了する必要はありません。

提案がありますか?

+2

デーモンと呼ばれるコンソールからDプロセスを切断するのが正しい方法だと思います。 – sashoalm

+0

私はこのようなことについて考えていましたが、それが可能であるかどうかはわかりませんでした –

答えて

5

子プロセス(D)は、setsid(2)を呼び出すことによって、制御端末との関連付けを解除する必要があります。

+0

間違いなく、うまく働いています。 –

関連する問題