我在Linux下有一个简单的程序,该程序可以周期性地将SIGUSR1信号发送到其子进程。但是当我发送例如10个信号时,有时会发生,孩子只接收了3个信号。最后发送的信号始终是SIGUSR2,并且每次都会接收到。
信号是否在排队,或者当进程未处理前一个信号时,信号就会被覆盖?有什么方法可以在队列中发送信号吗?
发生了以下情况:
使用信号nr1完成信号处理程序后,它将处理信号nr2,然后信号处理程序将处理SIGUSR2。
基本上,相同类型的未决信号不会排队,而是会被丢弃。不,没有简单的方法可以“爆发”这种方式发送信号。人们总是假设可能会丢弃多个信号,并试图让处理程序执行清理工作并找出要做什么(例如收养孩子,如果所有孩子同时死亡)。