1.signal函数使用(mysig.c)
#include<stdio.h> #include<signal.h> void myhandler(int sig) { printf("get sig is:%d\n",sig); } int main() { int i=1; for(;i<=31;i++) { signal(i,myhandler); } while(1); return 0; }
2.信号集的处理
#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<signal.h> void showpending(sigset_t *pending) { int i=1; for(;i<31;i++) { if(sigismember(pending,i)) { printf("1"); } else { printf("0"); } } printf("\n"); } void handler(int sig) { printf("get sig is:%d\n",sig); } int main() { sigset_t blockSet,oblockSet,pending; sigemptyset(&blockSet); sigemptyset(&oblockSet); sigaddset(&blockSet,2); signal(2,handler); sigprocmask(SIG_SETMASK,&blockSet,&oblockSet); int count=0; while(1) { sigpending(&pending); showpending(&pending); sleep(1); if(count++ == 10) { printf("recover procnblockset\n"); sigprocmask(SIG_SETMASK,&blockSet,NULL); } } return 0; }