2011-11-08 46 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)。 –