当另一个进程收到信号时,有没有办法通知?

时间:2017-11-10 13:47:17

标签: unix signals

我知道某个流程如何响应特定发送给它的信号(例如SIGINTSIGTERMSIGUSR2等。但是,可以向进程通知发送到其他进程的信号吗?

1 个答案:

答案 0 :(得分:2)

不在标准的Unix或POSIX中,您无法收到发送到另一个进程的信号的通知。请参阅signal(7)signal-safety(7)

但是,waitpid(2)和朋友可以告诉您child process是否已终止信号。并且killpg(2)process group发送信号(而kill(2)也会向负目标pid发送信号)。 getrusage(2)可以计算信号(通过其他一些过程收到)。您还可以使用proc(5)来查询有关其他进程的信息。您可以使用signalfd(2)ptrace(2)等....

信号是inter-process communication的一种非常有限且较差的形式。有更好的方法。

BTW,sigaction(2)可以与SA_SIGINFO一起使用,然后您的处理程序会获得指向siginfo_t的指针,另一个指向ucontext_t,这样您就可以获得大量信息。

请注意,进程组和会话是相关的。另请参阅setpgid(2)setsid(2)credentials(7)以及与终端和伪ttys相关的内容(请阅读tty demystifiedjob control)。

我猜您的other问题与此有关。但你在那里没有提到任何一个。

相关问题