sighandler.c

来自「一个C语言写的快速贝叶斯垃圾邮件过滤工具」· C语言 代码 · 共 60 行

C
60
字号
/* $Id: sighandler.c,v 1.7 2006/07/03 00:21:29 relson Exp $ *//*****************************************************************************NAME:   sighandler.c -- signal handlerAUTHOR:   David Relson <relson@osagesoftware.com>******************************************************************************/#include "common.h"#include <signal.h>#include <stdlib.h>#include <errno.h>#include "sighandler.h"#include "wordlists.h"/* Global Definitions */bool fDie = false;/* Function Definitions */static void mysignal(int sig, void (*hdl)(int)) {#ifdef	SA_RESTART    struct sigaction sa;    memset( &sa, 0, sizeof(sa));    sa.sa_handler = hdl;    sigemptyset(&sa.sa_mask);    sa.sa_flags = SA_RESTART;    if (sigaction(sig, &sa, NULL)) {	fprintf(stderr, "Cannot set signal %d handler to %p: %s\n",		sig, hdl, strerror(errno));	exit(EX_ERROR);    }#endif}static void mysigdie(int sig){    (void) sig;		/* quiet compiler warning */    if (!fDie)	fDie = true;    else	exit(EX_ERROR);}void signal_setup(void){    mysignal(SIGINT,  mysigdie);	/*  2 */    mysignal(SIGPIPE, SIG_IGN);		/*  1 */    mysignal(SIGTERM, mysigdie);	/* 15 */}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?