本节主要介绍使用sigprocmask函数来人工设置信号阻塞。首先介绍函数原型:
/* Get and/or change the set of blocked signals. */
extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
sigset_t *__restrict __oset) __THROW;
1)函数参数说明:
__how: 输入参数,设置信号阻塞掩码的方式。可以包括3中掩码设置,分别是阻塞信号的SIG_BLOCK,接触阻塞的SIG_UNBLOCK, 设置阻塞掩码的SIG_SETMASK。
__set: 输入参数,阻塞信号集。当参数__how为SIG_BLOCK时,该参数标明要阻塞的信号集。当__how参数为SIG_UNBLOCK时,该参数解除阻塞的信号集。当__how参数为SIG_SETMASK时,该参数标明要阻塞的信号集。
__oset: 输出参数,原阻塞信号集。调用成功后,将返回该进程原阻塞信号集。
2)返回值说明:
0: 调用成功;
-1: 调用失败,可以通过errno获取详细信息。
示例:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sign