现在我又三个进程 A B C
其中 A 进程设置了对 SIGUSR1 和 SIGUSR2 的处理:
sigset(SIGUSR1, a1);
sigset(SIGUSR2, a2);
如果 B 进程首先向 A 进程发送了一个 SIGUSR1 ,A进程会进入a1()函数,
但这时 C 进程 又向 A进程 发送了一个SIGUSER2, 那么:
1。A进程会中断a1()的处理然后进入b1()的处理?
2。A进程会先完成a1() 然后再响应SIGUSR2 进入b1()?
回复:
当A进入SIGUSR1信号处理程序的时候,如果SIGUSR2来了
会立即中断SIGUSR1的处理,嵌套进入SIGUSR2的处理函数。等SIGUSR2处理完
了才会回头接着处理SIGUSR1。
除非你在SIGUSR1的SA_MASK中把SIGUSR2屏蔽掉,
那样SIGUSR2来了也只是暂存在队列中,等SIGUSR1处理完了才有机会执行