当前位置: 技术问答>linux和unix
*** 求助!!! 关于(可靠)信号处理的问题 ***
来源: 互联网 发布时间:2015-05-27
本文导语: 现在我又三个进程 A B C 其中 A 进程设置了对 SIGUSR1 和 SIGUSR2 的处理: sigset(SIGUSR1, a1); sigset(SIGUSR2, a2); 如果 B 进程首先向 A 进程发送了一个 SIGUSR1 ,A进程会进入a1()函数, 但这时 C 进程 又...
现在我又三个进程 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 的处理:
sigset(SIGUSR1, a1);
sigset(SIGUSR2, a2);
如果 B 进程首先向 A 进程发送了一个 SIGUSR1 ,A进程会进入a1()函数,
但这时 C 进程 又向 A进程 发送了一个SIGUSER2, 那么:
1。A进程会中断a1()的处理然后进入b1()的处理?
2。A进程会先完成a1() 然后再响应SIGUSR2 进入b1()?
会是那种情况??????谢了!!!!!!!!!!!!!!!
|
1、用sigprocmask指定掩码
2、用sigaction注册信号处理函数,这样可以在sa_mask里指定进入信号处理函数时要额外屏蔽的信号。即进入时系统会自动屏蔽的信号集是:sa_mask、sigprocmask的并集加上当前正在递送的信号。返回时系统会自动恢复为sigprocmask。
3、如果不阻塞,当然会中断。
2、用sigaction注册信号处理函数,这样可以在sa_mask里指定进入信号处理函数时要额外屏蔽的信号。即进入时系统会自动屏蔽的信号集是:sa_mask、sigprocmask的并集加上当前正在递送的信号。返回时系统会自动恢复为sigprocmask。
3、如果不阻塞,当然会中断。
|
可靠信号排队是指同一个信号发生多次而言的,
你可以在进行信号处理的时候将其他信号全部阻塞,信号处理完成后再将其他信号
解阻塞,然后处理未决的信号(用sigpending)
你可以在进行信号处理的时候将其他信号全部阻塞,信号处理完成后再将其他信号
解阻塞,然后处理未决的信号(用sigpending)
|
当A进入SIGUSR1信号处理程序的时候,如果SIGUSR2来了
会立即中断SIGUSR1的处理,嵌套进入SIGUSR2的处理函数。等SIGUSR2处理完
了才会回头接着处理SIGUSR1。
会立即中断SIGUSR1的处理,嵌套进入SIGUSR2的处理函数。等SIGUSR2处理完
了才会回头接着处理SIGUSR1。