Linux学习笔记之对信号集的操作
来源:互联网 发布:js判断radio被选中 编辑:程序博客网 时间:2024/05/04 05:30
每个信号都有两个标志位分别表示阻塞(block)和未决(pending),还有⼀个函数指针表示处理动作。
一旦信号被阻塞,信号产生后就会处于未决状态,直到信号阻塞被解除。
对信号的处理就是递达,有三种方式:忽略;执行默认动作;执行自定义动作
所以信号要经历的过程是产生–>未决(被阻塞时)–>递达
系统提供了一系列对信号集操作的函数:
int sigemptyset(sigset_t *set)对信号集清零,表示该信号集不包含任何有效信号。
int sigaddset(sigset_t *set)在该信号集中添加某种有效信号。
int sigismember(const sigset_t *set, int signo)判断该信号集中是否包含某种信号
int sigprocmask(int how, const sigset_t *set ,const sigset *oset)可以读取或更改进程的信号屏蔽字(block表)
int sigpending(sigset_t *set)读取当前进程的未决信号集(pending表),通过set参数传出,set是一个输出型参数
下面是一个测试程序:
添加了SIGINT信号并将其阻塞,每隔一秒打印出pending表,10秒后解除阻塞
程序运行结果:
前三秒信号未产生,第四秒信号产生,处于未决状态,10秒后信号阻塞解除,信号被递达,程序退出。
0 0
- Linux学习笔记之对信号集的操作
- linux学习笔记之信号
- Linux学习笔记之---时钟和信号
- 学习笔记之信号及信号处理------linux c
- Linux信号机制学习笔记-----Linux信号机制的疑问?????
- Linux之ubuntu学习笔记(三):对文件和文件夹进行简单的操作
- 【linux 信号】学习笔记
- Linux信号学习笔记
- Linux学习笔记(06-15)信号集的使用
- UNIX环境高级编程学习之第十章信号-信号集的操作,让进程阻塞SIGQUIT信号
- C++学习笔记之对文件的操作<1>
- C++学习笔记之对文件的操作<1>
- C++学习笔记之对文件的操作
- C++学习笔记之对文件的操作<1>
- jQuery学习笔记之三 对Dom的操作
- C++学习笔记之对文件的操作<2>
- C++学习笔记之对文件的操作<1>
- C++学习笔记之对文件的操作<1>
- cocos2dx Lua工程调用C++ 详细操作步骤
- 在oracle 9 发送email包
- JPA学习笔记(2)——创建JPA项目
- 利用jQuery对无序列表排序
- 不利用svn server 新建用户,如何解决
- Linux学习笔记之对信号集的操作
- EXT4文件系统 mount 参数翻译
- mybatis学习笔记(十一)多对多关联查询/级联操作
- Monkey源码分析5—根据用户传入参数进行调整事件比例以及概率算法的实现
- Oracle SQL 1 : Oracle MERGE INTO Statement
- [leetcode] 104. Maximum Depth of Binary Tree
- Ext3.x FileUploadField 上传文件 方法
- Java中的并发库学习总结
- 不能从usb引导安装系统的解决方法