我知道某个流程如何响应特定发送给它的信号(例如SIGINT
,SIGTERM
,SIGUSR2
等。但是,可以向进程通知发送到其他进程的信号吗?
答案 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 demystified和job control)。
我猜您的other问题与此有关。但你在那里没有提到任何一个。