📄 sigtest.c
字号:
#include<stdio.h>#include<signal.h>#include<stdlib.h>static void sig_quit(int);int main(int argc,char *argv[]){ sigset_t newmask,oldmask,pendmask; if(signal(SIGQUIT,sig_quit)==SIG_ERR) { perror("signal"); exit(EXIT_FAILURE); } printf("install signal sig_quit\n"); sigemptyset(&newmask); sigaddset(&newmask,SIGQUIT); if(sigprocmask(SIG_BLOCK,&newmask,&oldmask)<0) { perror("signal"); exit(EXIT_FAILURE); } printf("block SIGQUTE,wait 15 second\n"); sleep(15); if(sigpending(&pendmask)<0) { perror("signal"); exit(EXIT_FAILURE); } if(sigismember(&pendmask,SIGQUIT)) printf("\n SIGQUIT pending\n"); if(sigprocmask(SIG_SETMASK,&oldmask,NULL)<0) { perror("signal"); exit(EXIT_FAILURE); } printf("SIGQUIT unblocked\n"); sleep(15); return 0; }static void sig_quit(int signo){ printf("catch the signal,the process will quit\n"); if(signal(SIGQUIT,SIG_DFL)==SIG_ERR) { perror("signal"); exit(EXIT_FAILURE); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -