2011-11-08 45 views
0

我有2個程序(由我寫的)。第一個叫做「MAN」的將調用「D」(第二個),這是一個在後臺運行的進程,直到以某種方式終止。從子進程收到的SIGINT

我想終止MAN而不終止D.

我嘗試使用Ctrl + C終止MAN並正確終止的人(我截獲SIGINT信號),現在我想的是d繼續運行,但是當MAN接收到CTRL + C,D也接收它。

如何處理這種情況?我希望保持僅運行D並以CTRL + C終止的可能性,這一點很重要。當我通過MAN運行它時,問題出現了,我不想用CTRL + C來終止它,只應該到達MAN。

有什麼建議嗎?

+2

我認爲正確的方法是從控制檯中斷開D進程,這就是所謂的守護進程。 – sashoalm

+0

我在想這樣的事情,但我不知道這是可能的 –

回答

5

子過程(D)應通過調用setsid(2)與控制終端分離。

+0

肯定工作得很好,非常感謝(@satuon)。 –