<aside> 💡 信号集:许多信号相关的系统调用都需要能表示一组不同的信号,多个信号可使用一个称之为信号集的数据结构来表示,其系统数据类型为 sigset_t。

</aside>

信号集使用位图机制实现(64位,每一位代表一个信号)

Untitled

未决信号集与阻塞信号集

未决信号集与阻塞信号集存放在PCB中

Untitled

未决信号集与阻塞信号集的工作原理

一个例子—— Ctrl + C

  1. 用户通过键盘 Ctrl + C, 产生2号信号SIGINT (信号被创建)
  2. 信号产生但是没有被处理 (未决)
  3. 这个未决状态的信号需要被处理,处理之前需要和另一个信号集(阻塞信号集)进行比较
  4. 在处理的时候和阻塞信号集中的标志位进行查询,看是不是对该信号设置阻塞了

信号集相关的函数

Untitled

<aside> 💡 以下信号集相关的函数都是对自定义的信号集进行操作

</aside>

sigemptyset

int sigemptyset(sigset_t *set)