信号处理嵌套问题

来源:互联网 发布:喜用神最正确的算法 编辑:程序博客网 时间:2024/06/07 03:25

现在我又三个进程   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处理完了才有机会执行

原创粉丝点击