信号(signal)
Posted joezzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号(signal)相关的知识,希望对你有一定的参考价值。
信号本质
信号是软件中断,是在软件层次上对中断的一种模拟
信号产生(来源)
1.硬件来源:比如我们按下了键盘或者其它硬件故障;
2.软件来源:最常用发送信号的系统函数是kill, raise, alarm和pause;
信号递送
当导致产生信号的事件发生时,内核就产生一个信号。信号产生后,内核通常会在进程表中设置某种形式的标志,当内核设置了这个标志,我们就说内核向一个进程递送了一个信号。
信号未决
信号产生和递送之间的时间间隔称为信号未决。
信号排队
每个进程有一个信号屏蔽字,用它来选择阻塞某些信号(unix提供sigprocmask函数可以获得和更改屏蔽字),对于被阻塞的信号,如果进程对该信号的动作是捕捉或系统默认(即不是忽略),则内核将为该信号保持为未决状态,直到该信号解除阻塞或将对该信号的动作更改为忽略。在这之前,如果这种信号发生了多次,则发生未决信号排队。
不可靠信号与可靠信号
不可靠信号
早期unix系统的信号为不可靠信号,它们有下面两点特性(问题):
1.进程对某种信号的处理方式进行设置后(signal函数),第一次接收到这种信号,进程按所设置的方式处理,在这之后,这种信号的处理方式就会被重置为系统默认值
2.信号可能会丢失:对于阻塞信号,不发生未决信号排队,信号阻塞解除后,仅
以上是关于信号(signal)的主要内容,如果未能解决你的问题,请参考以下文章