信号集操作函数及其使用
信号集操作函数
类型sigset_t
从上面的图来看,每个信号只有一个bit的未决标志,非0即1,不记录该信号产生了多少次,阻塞标志也是这样表示的。
因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而在未决信号集中“有效”和“无效”的含义是该信号是否处于未决状态。
阻塞信号集也叫做当前进程的信号屏蔽字(Signal Mask),这里的“屏蔽”应该理解为阻塞而不是忽略。
不能对sigset_t进行你的原生操作,因为我们不知道他的底层里面都存放的是什么,它只是帮助我们拿到操作系统底层的数据,因此我们要对位图进行操作时要使用信号集操作函数。
信号集操作函数
- sigemptyset
sigemptyset是初始化set所指向的信号集,让其中所有的信号的对应的比特位清零,表示该信号集不包含任何有效信号。
#include <signal.h> int sigemptyset(sigset_t *set);
- sigfillset
sigfillset初始化set所指向的信号集,使其中所有信号的对应bit置位,表示该信号集的有效信号包括系统支持的所有信号。
#include <signal.h> int sigfillset(sigset_t *set);
- sigaddset
sigaddset把某个特定信号加上
#include <signal.h> int sigaddset(sigset_t *set, int signo);
- sigdelset
sigdelset把某个特定信号去掉
#include <signal.h> int sigdelset