sigaction函数中 SA_NODEFER与sa_mask之间
函数原型:
int sigaction(int signo, struct sigaction *act, struct sigaction *oldact) ;
signo :需要处理的特定的信号
act :设定对信息处理的动作
oldact :返回signo信号的当前设置
结构体sigaction包含的元素:
(1) void (*sa_handler)() ; //旧有的信号处理函数
(2)void (*sa_sigaction)(int , siginfo_t*, void*) //新的信号处理函数
(3)sigset_t sa_mask ; // 信号阻塞设置
(4) int sa_flags ; // 处理信号的设置
flags有四个取值状态:
(1) SA_RESETHAND : 当调用信号处理函数时,将信号处理器设置为缺省值SIG_DFL, 这句话的意思也就是说当signo信号出现第二次的时候
信号处理终止进程,因为第一次接受的时候是将其设置为SIG_DFL
(2)SA_NODEFER: 不在阻塞与处理多个signo相同的信号。(没有这个状态项赋值给flags的时候默认signo信号是阻塞的)。这块最容易混,因为有些人会认为flags = SA_NODEFER,所有的信号都将不阻塞,这个理解是错误的,这个状态的设定不阻塞只是与函数第一个参数signo有关,与sa_mask里面设置的 阻塞信号无关,sa_mask中的信号仍为阻塞信号。
(3)SA_RESTART: 如果信号中断了某个系统调用,则系统会自动启动该系统调用。
(4)SA_SIGINFO : 设置了使用新的处理函数, 未设置则使用旧有的处理函数 。
发表此博文主要是想告诉新手SA_NODEFER与sa_mask之间不冲突。
声明:有些信息是我在做试验中发现的,也有可能不是特别准确,如果有人发现错误,欢迎大家批评指正。谢谢
sigaction函数中 SA_NODEFER与sa_mask之间相关推荐
- sigaction函数中关于sa_mask的解释
使用 man sigaction 查看手册,对sa_mask的描述是这样的: sa_mask specifies a mask of signals which should be bloc ...
- UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
lienhua34 2014-11-05 sigaction 函数跟 signal 函数一样,用于设置信号处理函数.此函数是用于取代 UNIX 早期版本使用的 signal 函数.UNIX 早期版本的 ...
- linux中signal函数返回值,signal函数、sigaction函数及信号集操作函数
信号是与一定的进程相联系的.也就是说一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如一个进程可以忽略某些信号而只处理其他一些信号另外一个进程还可以选择如何处理信号.总之这些总与特定的进程相联 ...
- linux中sigaction函数详解
一.函数原型:sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作) int sigaction(int signum, const struct sigaction * ...
- linux 中 sigaction 函数详解
linux 中 sigaction 函数详解 一.函数原型 sigaction 函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作) int sigaction(int signum, ...
- C语言编程>第十周 ⑦ 请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行……
例题:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回.一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格. 请勿改 ...
- C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数.在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的 ...
- 编写一个判别素数(质数)的函数 int isPrime(int x)。在 main 函数中,输入一个正整数 n,输出 1~n 之间的所有素数以及素数的个数
编写一个判别素数(质数)的函数 int isPrime(int x).在 main 函数中,输入一个正整数 n,输出 1-n 之间的所有素数以及素数的个数 #include<stdio.h> ...
- 在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换
RGB转换为HSL的算法一般需要自己编写,但是在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换. 下面是利用FireMonkey的RGBtoHSL和HSLtoRG ...
最新文章
- 将扫描字符转换成点阵信息
- Winform中怎样根据Name获取同窗体的控件
- Attachment assignment block里选择的文件是如何传到application server
- STL源码剖析 数值算法 copy_backward 算法
- java 等待几秒_问懵逼:请站在 JVM 角度谈谈 Java 的锁?
- 【luogu4408】 [NOI2003]逃学的小孩 [动态规划 树的直径]
- Git的使用的简单介绍
- git命令-远程仓库拉取、本地仓库更新、工作空间提交等等
- oracle--索引的使用
- 浅谈文字编码和Unicode(上)
- 深刻理解原型图设计的核心
- 计算机网络安全及防火墙技术任务书,《毕业设计(论文)-计算机网络安全技术分析》.doc...
- 【LG3244】[HNOI2015]落忆枫音
- 1-selenium-安装及模拟谷歌邮箱登录
- 电脑 蓝屏报错:SYSTMEM SCAN AT RAISED IRQL CAUGHT IMPROPER DRIVER UNLOAD
- Java实现可换行文字转图片
- QT Desinger设计程序主界面 PyUIC生成.py
- 行式数据和列式数据对比 存储压缩性能
- Android 应用开发入门
- 地震学类毕业论文文献都有哪些?