【发布时间】:2020-09-13 01:18:15
【问题描述】:
我们知道应用程序可以使用sigprocmask 函数显式阻塞和取消阻塞选定的信号,所以假设我们已经使用这个函数阻塞了SIGINT,因此内核设置阻塞向量中的相应位。如果我们运行程序,按Ctrl+C发送SIGINT,由于这个信号当前被阻塞,进程没有动作(进程不会被终止)。
我的问题是,即使这个信号被阻塞了,内核是否也会设置待处理向量中的相应位,以便当我们解除阻塞这个信号时,待处理中的SIGINT 将立即被进程接收?还是之前的SIGINT 不算数,必须触发新的SIGINT?
【问题讨论】:
-
是的,信号将被视为“待处理”,并在解除阻塞后立即发送。 (不是一个答案,因为我在平板电脑上,因此查找 POSIX 的相关位来支持这个断言将是太多的工作。)