我正在用户空间中开发自己的信号处理机制。当浏览内核代码并执行一些 C 代码时。我意识到,
场景 1:当我的代码在收到信号时执行信号处理程序时,假设遇到了不同类型的新信号(这个新信号也被处理),则调用新信号信号处理程序(SH2)来保存已经执行信号处理程序(SH1)。一旦 SH2 完成,SH1 又从它离开的地方开始执行。
场景 2:我注册了四个信号 SIGINT、SIGUSR2、SIGHUP 的处理程序。然后,我阻止了所有这些信号,并使用终端的“kill”命令生成这些信号。之后我再次解锁了这些信号。我观察到的是,这些信号是按顺序传递的,它们的处理程序是按顺序执行的。
那么信号处理程序何时顺序执行以及何时级联。
我浏览了内核源码:
如果现在调度程序计时器到期,将调用新的信号处理程序(导致信号处理程序级联)那么在某些情况下信号处理程序如何顺序执行?