我有一个子进程,可能会收到来自其父进程或其他地方的sigterm信号。如果信号来自父进程,我必须采取适当的措施。在c(linux)中,如何确定接收到的信号是来自父进程?
我有一个子进程,可能会收到来自其父进程或其他地方的sigterm信号。如果信号来自父进程,我必须采取适当的措施。在c(linux)中,如何确定接收到的信号是来自父进程?
sigaction
函数并使用 SA_SIGINFO
标志来设置信号处理程序。你的处理程序将接受一个参数 siginfo_t
。在 siginfo_t
结构体中有一个名为 si_pid
的字段。这是发送进程的进程 ID。将其与子进程的 ppid()
进行比较。sigwaitinfo
、sigtimedwait
等替代方法。但据我所知,从siginfo_t
结构中获取pid是唯一的方法。此外,由于这是Linux,还有signalfd
,它将在signalfd_siginfo.ssi_uid
字段中捕获发送pid(类似地)。 - Duck