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

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

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

上一节介绍进程间通信方式之一信号通信中的信号产生和捕捉函数,这一节介绍信号处理函数signal()函 数和信号集函数组,接上一节http://blog.csdn.net/mybelief321/article/details/9078193

强烈建 议做最后一个实验!

信号处理方法

信号处理的方法主要有以下两种:

①  使用 signal() 函数;

②  使用信号集函数组。

使用signal()函数

函数说明

使 用signal()函数处理时,只需指出要处理的信号和处理函数即可。它主要用于前32种非实时信号的处理,不支 持信号传递信息。Linux还支持一个更健壮更新的信号处理函数呢,它就是 sigaction(),推荐使用这个函数 。

函数格式

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

这里 signal() 这个函数的原型我当时看了头有点大,还是先说明一下:首先该函数原型整体指向一个无 返回值并且带一个整形参数的函数指针,也就是信号的原始配置函数;接着该原型又带有两个参数,其中第2 个参数可以是用户自定义的信号处理函数的函数指针。不明白也没事,后边做实验就明白了,会用就行了。

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

这里要说明的是 sigaction()函数中第2个和第3个参数用到的 sigaction 结构,下表为 siaction的定义 :

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

sa_handler 是一个函数指针,指定信号处理函数,这里除可以是咱们自定义的处理函数外,还可以为 SIG_DFL(采用默认的处理方式)或SIG_IGN(忽略信号)。它的处理函数只有一个参数,即信号值。

sa_mask 是一个信号集,它可以指定在信号处理程序执行过程中哪些信号应当被屏蔽,在调用信号捕 获函数前,该信号集要加入到信号的信号屏蔽字中。

sa_flags 中包含了很多标志位,是对信号进行处 理的各个选择项。它的常见可选值如下表所示:

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

(编辑:济南站长网)

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

热点阅读