加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验

发布时间:2016-09-18 22:09:54 所属栏目:Linux 来源:站长网
导读:上一节介绍进程间通信方式之一信号通信中的信号产生和捕捉函数,这一节介绍信号处理函数signal()函 数和信号集函数组,接上一节http://blog.csdn.net/mybelief3

编译运行后结果如下

Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验

第一次按组合键“Ctrl+c”, 结果如下

Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验

第二次按组合键“Ctrl+c”,结 果如下

Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验

我建议你把25行的换成 SA_RESTARTHAND等试一试,会加深理解的

信号集函数组

函数说明

使用信号集函数组处 理信号时设计一系列的函数,这些函数按照先后的调用次序可分为以下几大模块:创建信号集、注册信号处理 函数及检测信号。

其中,创建信号集主要用于处理用户感兴趣的一些信号,其函数包括以下几个:

sigemptyset(): 将信号集初始化为空

sigfillset(): 将信号集初始化为包含所有已定义的信 号集

sigaddset(): 将指定信号加入到信号集中

sigdelset(): 将指定信号从信号集中删除

sigismember(): 查询指定信号是否在信号集中

注册信号处理函数主要用于决定进程如何处理 信号。这里要注意的是,信号集里的信号并不是真正可以处理的信号,只有当信号的状态处于非阻塞状态时才 会真正起作用。因此,首先使用 sigprocmask() 函数检测并更改信号屏蔽字(信号屏蔽字是用来指定当前被 阻塞的一组信号,它们不会被进程接收),然后使用 sigaction()函数来定义进程接收到特定信号后的行为。

检测信号是信号处理的后续步骤,因为被阻塞的信号不会传递给进程,所以这些信号就处于“未处理 ”状态(也就是进程不清除它的存在)。sigaction()函数允许进程检测“未处理”信号,并进一步决定对它 们做何处理。

函数格式

Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验

Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读