【发布时间】:2012-01-13 23:02:08
【问题描述】:
在运行 Linux 2.6.35+ 的系统中,我的程序创建了许多子进程并监视它们。如果子进程死亡,我会进行一些清理并再次生成该进程。我使用signalfd() 在我的进程中获取SIGCHLD 信号。 signalfd 使用 libevent 异步使用。
当对非实时信号使用信号处理程序时,当信号处理程序正在为特定信号运行时,必须阻止相同信号的进一步出现以避免进入递归处理程序。如果多个信号同时到达,那么内核只调用一次处理程序(当信号被解除阻塞时)。
使用signalfd() 时的行为是否相同?由于基于signalfd 的处理没有与正常信号处理程序的异步执行相关的典型问题,我认为内核可以排队所有进一步出现的SIGCHLD?
任何人都可以澄清这种情况下的 Linux 行为吗...
【问题讨论】:
标签: linux linux-kernel signals