sig.c
来自「netkit-base-0.17.tar.gz linux嵌入式开发使用!」· C语言 代码 · 共 70 行
C
70 行
#include <signal.h>#include <string.h>#include <syslog.h>#include "sig.h"static sigset_t blockmask, emptymask;static int blocked=0;char sig_rcsid[] = "$Id: sig.c,v 1.2 2000/07/22 20:13:07 dholland Exp $";voidsig_init(void){ struct sigaction sa; sigemptyset(&emptymask); sigemptyset(&blockmask); sigaddset(&blockmask, SIGCHLD); sigaddset(&blockmask, SIGHUP); sigaddset(&blockmask, SIGALRM); memset(&sa, 0, sizeof(sa)); sa.sa_mask = blockmask; sa.sa_handler = retry; sigaction(SIGALRM, &sa, NULL); sa.sa_handler = config; sigaction(SIGHUP, &sa, NULL); sa.sa_handler = reapchild; sigaction(SIGCHLD, &sa, NULL); sa.sa_handler = goaway; sigaction(SIGTERM, &sa, NULL); sa.sa_handler = goaway; sigaction(SIGINT, &sa, NULL); sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL);}voidsig_block(void) { sigprocmask(SIG_BLOCK, &blockmask, NULL); if (blocked) { syslog(LOG_ERR, "internal error - signals already blocked\n"); syslog(LOG_ERR, "please report to netbug@ftp.uk.linux.org\n"); } blocked = 1;}voidsig_unblock(void) { sigprocmask(SIG_SETMASK, &emptymask, NULL); blocked = 0;}voidsig_wait(void) { sigsuspend(&emptymask);}voidsig_preexec(void){ struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; sigaction(SIGPIPE, &sa, NULL); sig_unblock();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?