[Linux]关于sigprocmask函数的讨论
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <assert.h> void printSignal()
{
sigset_t set;
int ret = ;
sigemptyset(&set);
ret = sigpending(&set);
int i = ;
for (i = ; i < ; i++)
{
if ( == (ret = sigismember(&set, i)))
{
printf("");
}
else if ( == ret)
{
printf("");
}
}
puts("");
} void my_sigaction (int num, siginfo_t *st, void *dat)
{
int ret = ;
if (SIGINT == num)
{
sigset_t set;
sigemptyset(&set);
ret = sigaddset(&set, SIGQUIT);
assert(- != ret);
ret = sigprocmask(SIG_UNBLOCK, &set, NULL);
assert(- != ret);
printf("my_sigaction\n");
printSignal();
printf("func myhandler num = %d\n", num);
}
else
{
printf("signal is no SIGQUIT\n");
}
} int main(void)
{
int ret = ; /* 阻塞信号 */
sigset_t set;
sigemptyset(&set);
ret = sigaddset(&set, SIGQUIT);
assert(- != ret);
ret = sigprocmask(SIG_BLOCK, &set, NULL);
assert(- != ret);
printf("阻塞信号\n");
//printSignal();
sigemptyset(&set);
/*
sigpending 是从未决状态字中读取的, 但是未决信号并不能立即得到block的同步
也就是说在block置1时pending并不能够立即的更新为1
*/
//sigpending(&set); /* 注册信号 */
struct sigaction act;
act.sa_sigaction = my_sigaction;
ret = sigemptyset(&(act.sa_mask));
assert(- != ret);
ret = sigaction(SIGINT, &act, NULL);
assert(- != ret);
printf("注册信号\n");
printSignal(); while ()
{
printSignal();
sleep();
}
return ;
}
[Linux]关于sigprocmask函数的讨论的更多相关文章
- Linux常用系统函数
Linux常用系统函数 一.进程控制 fork 创建一个新进程clone 按指定条件创建子进程execve 运行可执行文件exit 中止进程_exit 立即中止当前进程getdtablesize 进程 ...
- Linux C 创建目录函数mkdir相关(转-清新居士)
I.Linux C 创建目录函数mkdir的mode设置问题 函数原型: #include <sys/stat.h> int mkdir(const char *path, mode_t ...
- linux下syscall函数,SYS_gettid,SYS_tgkill
出处:http://blog.chinaunix.net/uid-28458801-id-4630215.html linux下syscall函数,SYS_gettid,SYS_tgkill ...
- 对于linux下system()函数的深度理解(整理)
原谅: http://blog.sina.com.cn/s/blog_8043547601017qk0.html 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同 ...
- Linux下c函数dlopen实现加载动态库so文件代码举例
dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...
- Linux Kernel‘ieee80211_radiotap_iterator_init()’函数拒绝服务漏洞
漏洞名称: Linux Kernel‘ieee80211_radiotap_iterator_init()’函数拒绝服务漏洞 CNNVD编号: CNNVD-201312-041 发布时间: 2013- ...
- Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-423 发布时间: 2013-11-29 更新时间: 201 ...
- Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞
漏洞名称: Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞 CNNVD编号: CNNVD-201311-422 发布时间: 2013-11-29 更新时间: 2013- ...
- Linux kernel ‘lbs_debugfs_write’函数数字错误漏洞
漏洞名称: Linux kernel ‘lbs_debugfs_write’函数数字错误漏洞 CNNVD编号: CNNVD-201311-421 发布时间: 2013-11-29 更新时间: 2013 ...
随机推荐
- Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found 问题排查
自定义的classLoader启动spring容器,遇到 Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not subtype ...
- mysql的SQL_CALC_FOUND_ROWS 使用 类似count(*) 使用性能更高
mysql的SQL_CALC_FOUND_ROWS 使用 类似count(*) 使用性能更高 在很多分页的程序中都这样写: SELECT COUNT(*) from `table` WHERE ... ...
- Sqlte 知识点记录
1.表存在 select count(*) from sqlite_master where type='table' and name='MyTable'; sql),path ))"; ...
- Linux-NoSQL之Redis(一)
1.Redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...
- 基于zepto使用swipe.js制作轮播图demo
在移动web开发中,由于手机界面较小,为了能展示更多的图片经常使用轮播图并且还需要考虑到手机流量的问题,通过请教他人以及百度,个人感觉swipe.js比较好用 它是一个纯javascript工具,不需 ...
- ffmpeg avpicture_fill的一些使用
标签: ffmpegavpicture_fill 2013-05-17 10:03 4713人阅读 评论(1) 收藏 举报 分类: ffmpeg(3) 这个FFMPEG我没找到详细的中文教程,只有 ...
- [转]javascript单元测试
1. 什么是单元测试 在计算机编程中,单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编程中,一个单元就是单 ...
- 洛谷 1351 联合权值——树形dp
题目:https://www.luogu.org/problemnew/show/P1351 对拍了一下,才发现自己漏掉了那种拐弯的情况. #include<iostream> #incl ...
- bzoj 3144 切糕 —— 最小割
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3144 每个点拆成 R 个,连成一条链,边上是权值,割掉代表选这一层: 然后每个点的第 t 层 ...
- JAVA的推荐书目
本文是摘自别人的网站,自己读的书少,谨以此作为自己要读的书的一个书目列表吧. 原文地址:http://blog.sina.com.cn/s/blog_6aa1784101011hl5.html 正文: ...