如何find谁发送sigterm信号到我的进程或我的进程组?

我们有一个守护进程的服务器程序,它分派一个孩子。 当孩子退出时,Parent正在接收SIGTERM信号。 所以,我们想知道

1)谁发送了这个SIGTERM

2) SIGTERM是仅针对父母还是其组?

3)在这种情况下可以产生什么样的SIGTERM

4)是否可以掩盖这个SIGTERM信号? 如果是,这个电话的副作用是什么?

您需要一个SA_SIGINFO类型的sig-handler。 然后你将得到包含si_pid的siginfo_t,这是一个信令过程。 http://linux.die.net/man/2/sigaction

添加到@ rib的答案:

当前版本的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/ ,它不知道什么版本添加它