关于linux下的信号的问题

[复制链接]
查看11 | 回复2 | 2012-4-23 12:29:29 | 显示全部楼层 |阅读模式
信号是否阻塞,只是信号mask的状态,决定对将来收到信号的处理方式。无论你是否给他信号,这个状态都已经设定。这个代码先block SIGINT, 然后sleep 10秒等待信号. 10秒后,检查10秒内是否输入了SIGINT信号.(如果输入了,会被block, handler不会被调用, sleep会被中断.). 不管如何,随后立即解除对SIGINT的block. 最后,进入死循环,这时如果ctrl+C, 会发现 handler能被调用....
回复

使用道具 举报

千问 | 2012-4-23 12:29:29 | 显示全部楼层
每个进程都有一个阻塞位图和一个信号位图,当检查信号时,会把阻塞位图取反与上信号位图。系统发送信号时只改变信号位图,设置信号阻塞状态只改变阻塞位图,他们其实没得好大关系,只是在信号检查时,一旦该信号被阻塞,这个信号就相当于不存在,不执行任何操作。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行