📄 sigaction.c
字号:
#include <sys/types.h>#include <unistd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>void my_func(int signum){ printf("If you want to quit,please try SIGQUIT. %d \n",signum);}int main(){ sigset_t set,pendset; struct sigaction action1,action2; if(sigemptyset(&set)<0) { perror("sigemptyset"); } if(sigaddset(&set,SIGQUIT)) { perror("sigaddset"); } if(sigaddset(&set,SIGINT)) { perror("sigaddset"); } if(sigprocmask(SIG_BLOCK,&set,NULL)<0) { perror("sigprocmask"); } else { printf("blocked\n"); sleep(5); } if(sigprocmask(SIG_UNBLOCK,&set,NULL)) { perror("sigprocmask"); } else { printf("unblock\n"); } while(1) { if(sigismember(&set,SIGINT)) { sigemptyset(&action1.sa_mask); action1.sa_handler=my_func; sigaction(SIGQUIT,&action1,NULL); } if(sigismember(&set,SIGQUIT)) { sigemptyset(&action2.sa_mask); action2.sa_handler=SIG_DFL; printf("SIGTERM\n"); sigaction(SIGTERM,&action2,NULL); } } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -