我們有一個守護程序服務器程序,它分派一個孩子。當孩子退出時,Parent正在收到SIGTERM
信號。所以,我們想知道如何找到誰將sigterm信號發送到我的過程或我的過程組?
1)誰發送這個SIGTERM
?
2)SIGTERM
是否僅限於父母或其團體?
3)在這種情況下可以生成SIGTERM
的可能方式是什麼?
4)是否可以掩蓋這個SIGTERM
信號?如果是的話,這個電話的副作用是什麼?
我們有一個守護程序服務器程序,它分派一個孩子。當孩子退出時,Parent正在收到SIGTERM
信號。所以,我們想知道如何找到誰將sigterm信號發送到我的過程或我的過程組?
1)誰發送這個SIGTERM
?
2)SIGTERM
是否僅限於父母或其團體?
3)在這種情況下可以生成SIGTERM
的可能方式是什麼?
4)是否可以掩蓋這個SIGTERM
信號?如果是的話,這個電話的副作用是什麼?
您需要一個SA_SIGINFO類型的sig-handler。 然後你會得到包含si_pid的siginfo_t,它是信號處理過程。 http://linux.die.net/man/2/sigaction
添加到@肋骨的回答是:
strace的顯示的當前版本的信息
read(0, 0x7f4ab8353000, 4096) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
+++ killed by SIGTERM +++
我可以看到我的過程是由PID#1殺死(INIT,即暴發戶)
ps我的CentOS(6.0 & 6.4)沒有它,所以我建立它從http://sourceforge.net/projects/strace/,不知道什麼版本添加它