[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 ...
随机推荐
- CreateProcess 执行CMD命令,并重定向输出
1. 参考网址:http://www.cnblogs.com/cnarg/archive/2011/02/20/1959292.html function TfrmMain.ExecDosCmd :b ...
- 创建HTML5/CSS3单页Web布局
1. [图片] 第1步:PhotoShop 2. [代码]第2步:index.html <!DOCTYPE html><!-- The new doctype -->< ...
- zTree的后台数据绑定
前台js: var treeNodes; $.ajax({ async: false, cache: false, type: 'POST', contentType: "applicati ...
- 解决Eclipse和myeclipse在进行 html,jsp等 页面编辑时,自动格式化变丑的问题
在eclipse和myelipse写JAVA代码时中使用ctrl+shift+f 快捷键自动排版省时又省力,排版后的代码规范美观又层次性,但在我们写jsp或html代码时,使用这个快捷键排版简直奇丑无 ...
- Spring4自动装配(default-autowire) (转)
原文地址:http://blog.csdn.net/conglinyu/article/details/63684957 Spring 自动装配 通过配置default-autowire 属性,Spr ...
- appium界面元素介绍
一.主窗口 主页面顶部从左到右依次是: AndroidSettings:android相关的设置 GeneralSettings:全局设置,设置appium相关的内容 DeveloperSetting ...
- java_面试_02_Java面试题库及答案解析
二.参考资料 1.Java面试题库及答案解析
- php获取客户端IP地址的几种方法(转)
[php] view plain copy php获取客户端IP地址的几种方法 方法一 <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $ ...
- 原生js监听input值改变事件
哈哈哈,又来了,今天闲来无事,实验了下原生js监听input value值改变事件,下面就来说道说道: 本来写监听input值便获是用jquery的,之前的随笔写了,就是这个方法,地址:http:// ...
- codeforces 553B B. Kyoya and Permutation(找规律)
题目链接: B. Kyoya and Permutation time limit per test 2 seconds memory limit per test 256 megabytes inp ...