linux 当前处理信号自动屏蔽

当某个信号被处理时(即正在执行信号处理handler),内核会自动阻塞该信号的再次传递(再次传递会导致信号处理handler的嵌套);
当信号处理返回后,内核会自动恢复该信号到调用信号处理handler之前的阻塞状态;


如信号SIGUSR1在调用handler之前未被阻塞,在调用handler时被阻塞,handler执行完后恢复未被阻塞状态;
信号SIGUSR2在调用handler之前被阻塞,在调用handler时仍被阻塞,handler执行完后恢复被阻塞状态;

 

Ref:

Advanced Programming in the UNIX Environment: Second Edition>>10.14. sigaction Function

Hence, we are guaranteed that whenever we are processing a given signal, another occurrence of that same signal is blocked until we're finished processing the first occurrence. Recall from Section 10.8 that additional occurrences of the same signal are usually not queued. If the signal occurs five times while it is blocked, when we unblock the signal, the signal-handling function for that signal will usually be invoked only one time.


用以下示例代码观察信号处理前、处理中、处理后的mask变化情况:</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值