设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 我们致力于打造专业的站长资讯、交流、合作平台!
热搜: 手机 站长之家 创业者
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

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

发布时间:2015-01-14 15:07 所属栏目:[Linux] 来源:站长网
导读:上一节介绍进程间通信方式之一信号通信中的信号产生和捕捉函数,这一节介绍信号处理函数signal()函 数和信号集函数组,接上一节http://blog.csdn.net/mybelief3
上一节介绍进程间通信方式之一信号通信中的信号产生和捕捉函数,这一节介绍信号处理函数signal()函 数和信号集函数组,接上一节http://blog.csdn.net/mybelief321/article/details/9078193

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

信号处理方法

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

①  使用 signal() 函数;

②  使用信号集函数组。

使用signal()函数

函数说明

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

函数格式

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

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

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

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

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

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

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

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

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

(编辑:ASP站长网)

    网友评论
    推荐文章