2014-12-07 55 views
1

我有一個將第三方命令行實用程序作爲子進程分派的應用程序(以Java命名)。當這個應用程序被給出一個信號,如SIGTERM,我注意到這個信號也被轉發給所有子進程。Linux父進程可以保護子進程不受信號干擾嗎?

網上有很多東西我可以找到關於如何處理過程中的信號,但我無法控制第三方工具如何選擇處理其信號。

理想情況下,我想在我的應用程序中做什麼,阻止任何傳入信號從級聯到我的孩子,並自己處理它們。從我看到的,實現我自己的信號處理程序並不會阻止信號獨立傳播給我的孩子。

回答

1

如果kill信號發送到整個組(使用killpg()系統調用),所有進程都應該接收它。

爲了保護孩子,孩子需要配置一個信號處理程序和/或sigprocmask,或者您需要對孩子進行跟蹤並截取信號傳遞)