首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
信号(三)---早期signal函数和现代signal函数的一些对比
时间:
2016-10-03 23:22:22
阅读:
179
评论:
0
收藏:
0
[点我收藏+]
标签:
使用signal函数的一些缺点:
由于signal函数调用成功时会返回原来信号处理程序的指针,所以如果我想要利用signal函数来获取原先信号处理程序的指针的话,必须要先去改变其信号处理方式。如下图所示
在早期的signal函数的实现中,使用signal函数安装的信号处理函数只能使用一次;在第一次捕捉到该信号的时候,就去执行安装的信号处理函数,同时内核会将该信号的信号处理方式修改为默认方式。下次进程再次收到这个信号的时候,进程将会执行信号的默认动作。但是现在的signal函数的实现并不是这样的,只要使用signal函数安装一次信号处理函数就可以永久使用该信号处理函数。究其根本原因,在于signal函数最终调用了sigaction函数,并且传递的参数中含有SA_ONESHOT这个标志,而早期的signal函数调用的sigaction中,并没有传递SA_ONSHOT这个标志。在现在的操作系统中,使用sysv_signal函数来代表早期的signal函数。
早期的signal函数实现在执行某信号的信号处理函数的时候并不会屏蔽该信号,执行信号处理函数的期间如果再次收到了该信号,进程将立即执行信号的默认动作(由于早期signal函数实现只能使用信号处理函数一次)。但是现代的signal函数实现中都会阻塞该信号,会等到本次信号处理函数执行完毕后再去处理收到的信号。
早期的signal函数会中断某些系统调用,现代的signal函数不会出现这个问题,具体的后面的文章再细分析。
信号(三)---早期signal函数和现代signal函数的一些对比
标签:
原文地址:http://www.cnblogs.com/frank-yxs/p/5926135.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!