美文网首页
信号传递的时机与顺序

信号传递的时机与顺序

作者: GGBond_8488 | 来源:发表于2021-03-10 14:21 被阅读0次

    信号何时传递

    同步产生的信号会立即传递。例如,硬件异常会触发一个即时信号,而当进程使用raise()向自身发送信号是,信号会在raise调用返回前就已经发出。
    当异步产生一个信号,即使并未将其阻塞,在信号产生和时机传递之间仍有一个(瞬时)延迟。在此期间,信号处于等待状态。这是因为内核将等待信号传递给进程的时机是,该进程正在执行,且发生由内核态到用户态的下一次切换时。实际上,这意味着再以下时刻才会传递信号。

    • 进程再前度超时后,再度获得调度时(即,在一个时间片的开始处)。
    • 系统调用完成时(信号的传递可能引起正再阻塞的系统调用过早完成)。

    解除对多个信号的阻塞时,信号的传递顺序

    就目前的Linux实现而言,Linux内核按照信号编号的升序来传递信号。例如,如果对处于等待状态的信号SIGINT(2)和SIGQUIT(3)同时解除阻塞,无论两个信号产生次序如何,SIGINT都先于SIGQUIT而传递

    相关文章

      网友评论

          本文标题:信号传递的时机与顺序

          本文链接:https://www.haomeiwen.com/subject/ojkmqltx.html