用于设置进程对多个 Linux 信号(signals)的响应方式。它广泛用于守护进程(daemon)、服务程序或嵌入式系统中的主程序,确保进程能够正确应对终止、子进程退出、忽略某些信号等情况。
源码举例:
static void set_signals(void)
{
#ifndef NO_STANDALONE
sigset_t sigs;
struct sigaction sa;
sigfillset(&sigs);
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART;
sa.sa_handler = sigchild;
sigdelset(&sigs, SIGCHLD);
(void) sigaction(SIGCHLD, &sa, NULL);
sa.sa_handler = SIG_IGN;
(void) sigaction(SIGPIPE, &sa, NULL);
(void) sigaction(SIGALRM, &sa, NULL);
(void) sigaction(SIGURG, &sa, NULL);
#ifdef SIGIO
(void) sigaction(SIGIO, &sa, NULL);