sigsuspend()与sigprocmask();pause()区别
时间:2010-10-13 来源:dzm5566126com
sigsuspend的整个原子操作过程为:
(1) 设置新的mask阻塞当前进程;
(2) 收到信号,恢复原先mask;
(3) 调用该进程设置的信号处理函数;
(4) 待信号处理函数返回后,sigsuspend返回。
sigsuspend和sigprocmask() ; pause();的啥区别:sigsuspend把信号捕捉及信号处理函数的调用整合在一起了,也就是说(1)设置新的mask阻塞当前进程后如果有信号我就自己收信号,调用信号处理函数了,而sigprocmask() ; pause();的问题在于它希望在pause之后收信号,而不是sigprocmask() 和pause();之间,所以就有可能会出现信号丢失的情况。
(1) 设置新的mask阻塞当前进程;
(2) 收到信号,恢复原先mask;
(3) 调用该进程设置的信号处理函数;
(4) 待信号处理函数返回后,sigsuspend返回。
sigsuspend和sigprocmask() ; pause();的啥区别:sigsuspend把信号捕捉及信号处理函数的调用整合在一起了,也就是说(1)设置新的mask阻塞当前进程后如果有信号我就自己收信号,调用信号处理函数了,而sigprocmask() ; pause();的问题在于它希望在pause之后收信号,而不是sigprocmask() 和pause();之间,所以就有可能会出现信号丢失的情况。
相关阅读 更多 +