sigtest.c

来自「linux下的进程通讯机制的代码例子。消息队列以及共享内存。」· C语言 代码 · 共 49 行

C
49
字号
#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 + =
减小字号Ctrl + -
显示快捷键?