一、介绍
信号阻塞集也称信号屏蔽集、信号掩码。每个进程都有一个阻塞集,创建子进程时子进程将继承父进程的阻塞集。
信号阻塞集用来描述哪些信号递送到该进程的时候被阻塞(在信号发生时记住它,直到进程准备好时再将信号通知进程)。所谓阻塞并不是禁止传送信号, 而是暂缓信号的传送。若将被阻塞的信号从信号阻塞集中删除,且对应的信号在被阻塞时发生了,进程将会收到相应的信号。
我们可以通过 sigprocmask()修改当前的信号掩码来改变信号的阻塞情况。
sigpending()得到当前进程信号阻塞集,可以通过sigismember()去判断
二、接口函数
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
参数:
how: 信号阻塞集合的修改方法,有3种情况:
SIG_BLOCK: 向信号阻塞集合中添加 set 信号集,新的信号掩码是