关于sigprocmask的一个问题
时间:2010-09-12
来源:互联网
APUE中有一段话我很疑惑,大致是这样的:
当我阻塞SIGINT后又用sigprocmask解除对此信号的阻塞,就在解除阻塞后紧跟pause语句执行暂停;可是在pause之前,sigprocmask之后这个时间窗口中出现SIGINT的传递会发生什么情况呢?
APUE中说的是该信号会丢失,我觉得不能理解,因为sigprocmask(SIG_SETMASK, &oldmask, NULL)不是把阻塞解除了么?那么如果在后面紧接的pause()执行之前,把之前就已经block了的SIGINT信号传递过来了,那势必按照默认的方式,终止该进程啊?为什么说会丢失这个信号呢?
帮忙指导一下,谢谢~
当我阻塞SIGINT后又用sigprocmask解除对此信号的阻塞,就在解除阻塞后紧跟pause语句执行暂停;可是在pause之前,sigprocmask之后这个时间窗口中出现SIGINT的传递会发生什么情况呢?
APUE中说的是该信号会丢失,我觉得不能理解,因为sigprocmask(SIG_SETMASK, &oldmask, NULL)不是把阻塞解除了么?那么如果在后面紧接的pause()执行之前,把之前就已经block了的SIGINT信号传递过来了,那势必按照默认的方式,终止该进程啊?为什么说会丢失这个信号呢?
帮忙指导一下,谢谢~
作者: blackgenius 发布时间: 2010-09-12
你理解的没错,不过要深入理解需要结合sigsuspend.
APUE在这里所说的信号丢失,不是真正的丢失,而是没有被接下来的pause等到。
如果你在程序一开始就注册了信号处理函数,那么在sigprocmask和pause之间的
这个信号还是会触发信号处理函数,如果信号是SIGINT,缺省就会中止进程。
APUE在这里所说的信号丢失,不是真正的丢失,而是没有被接下来的pause等到。
如果你在程序一开始就注册了信号处理函数,那么在sigprocmask和pause之间的
这个信号还是会触发信号处理函数,如果信号是SIGINT,缺省就会中止进程。
作者: insnowind 发布时间: 2010-09-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28