我有3个不相关的进程同时运行( 2个守护程序进程在后台运行和 1个主进程在前台运行)。
我在其中一个守护程序进程中为SIGUSR1创建了信号处理程序,其他进程正在尝试使用kill(pid,SIGUSR1)发送信号。
当我发送一个信号时,它工作正常。当我以这种方式发送它时,它也可以正常工作:
kill(pid,SIGUSR1);
睡眠(5);
kill(pid,SIGUSR1);
睡眠(5);
kill(pid,SIGUSR1);
睡眠(5);
这很好用,信号处理程序执行三次,我在syslog上监视。
但是当我移除睡眠并一个接一个地直接发送它们时,信号处理程序应该被执行三次(理想情况下),但它只执行一次或两次。。如果我多次向后发送相同的信号,则无法执行信号处理程序。
理想情况下,它应该进入待处理信号并在当前处理程序执行完成后执行。我还读过如果多次发送相同的信号,那么它会忽略多个实例,所以有一种方法可以一个接一个地执行所有实例而不是忽略它们。
我有什么遗漏或错误吗?
我需要这种执行才能工作,因为会有多个进程将SIGUSR1信号发送到一个特定的守护程序进程,所以我试图在没有任何睡眠的情况下运行。
感谢您的帮助