[unix]SIGQUIT信号堵塞的测试
2017-12-27 14:47
344 查看
#include <apue.h> #include <errno.h> static void sig_quit(int); int main(void) { sigset_t newmask, oldmask, pendmask; if(signal(SIGQUIT,sig_quit) == SIG_ERR) err_sys("can't catch SIGQUIT"); /** * Block SIGQUIT and save current signal mask */ sigemptyset(&newmask); sigaddset(&newmask,SIGQUIT); if(sigprocmask(SIG_BLOCK,&newmask,&oldmask) < 0) err_sys("SIG_BLOCK error!"); sleep(5); /* SIGQUIT here will remain pending */ if(sigpending(&pendmask) < 0) err_sys("sigpending error"); if(sigismember(&pendmask,SIGQUIT)) printf("\nSIGQUIT pending\n"); /** * Restore signal mask which unblocks SIGQUIT. */ if(sigprocmask(SIG_SETMASK,&oldmask,NULL) < 0) err_sys("SIG_SETMASK error"); printf("SIGQUIT unblocked\n"); sleep(5); /* SIGQUIT here will terminate with core file. */ exit(0); } static void sig_quit(int signo) { printf("caught SIGQUIT\n"); if(signal(SIGQUIT,SIG_DFL) == SIG_ERR) err_sys("can't reset SIGQUIT"); }
学无止境不耻下问
相关文章推荐
- UNIX SIGTERM等信号意义
- SIGINT,SIGQUIT,SIGTERM等终止进程信号的区别
- Linux信号SIGTERM、SIGKILL、SIGINT和SIGQUIT的区别
- 嵌入式 UNIX SIGTERM等信号意义一览文档
- UNIX SIGTERM等信号意义 .
- UNIX SIGTERM等信号意义
- 10_15.c先阻塞SIGQUIT信号,再释放。
- 程序捕获退出信号(SIGINT,SIGQUIT,SIGTERM)
- 对Postmaster 对 SIGQUIT 信号处理的理解
- Unix环境高级编程(阅读笔记)----信号集、信号屏蔽函数sigprocmask
- ★实验10-1 1. 编写程序测试函数setitimer(int)和getitimer()。 2. 安装信号, 使信号SIGALRM、SIGVTALRM、SIGPROF可以被捕获。 #include
- UNIX SIGTERM等信号意义
- UNIX环境高级编程学习之第十章信号-信号的基本操作(绑定/忽略/默认/发送)
- unix 线程同步之 条件变量 及 互斥锁 测试例子
- Linux进程间通信(二):信号集函数 sigemptyset()、sigprocmask()、sigpending()、sigsuspend()
- 信号是unix中最古老的一种通信方式
- UNIX上的C++程序设计守则---准则1:不依赖于信号收发的设计
- 进程间信号灯性能测试
- Unix 下常见的处理信号
- unix 环境高级编程 信号函数杂记一