码迷,mamicode.com
首页 > 其他好文 > 详细

信号(signal)

时间:2018-10-19 14:02:36      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:默认值   kill   忽略   系统默认   硬件   系统   发送   屏蔽   unix   

信号本质

  信号是软件中断,是在软件层次上对中断的一种模拟

信号产生(来源)

1.硬件来源:比如我们按下了键盘或者其它硬件故障;

2.软件来源:最常用发送信号的系统函数是kill, raise, alarm和pause;

信号递送

  当导致产生信号的事件发生时,内核就产生一个信号。信号产生后,内核通常会在进程表设置某种形式的标志,当内核设置了这个标志,我们就说内核向一个进程递送了一个信号。

信号未决

  信号产生和递送之间的时间间隔称为信号未决。

信号排队

  每个进程有一个信号屏蔽字,用它来选择阻塞某些信号(unix提供sigprocmask函数可以获得和更改屏蔽字),对于被阻塞的信号,如果进程对该信号的动作是捕捉或系统默认(即不是忽略),则内核将为该信号保持为未决状态,直到该信号解除阻塞或将对该信号的动作更改为忽略。在这之前,如果这种信号发生了多次,则发生未决信号排队

不可靠信号与可靠信号

不可靠信号

早期unix系统的信号为不可靠信号,它们有下面两点特性(问题):

1.进程对某种信号的处理方式进行设置后(signal函数),第一次接收到这种信号,进程按所设置的方式处理,在这之后,这种信号的处理方式就会被重置为系统默认值

2.信号可能会丢失:对于阻塞信号,不发生未决信号排队,信号阻塞解除后,仅

信号(signal)

标签:默认值   kill   忽略   系统默认   硬件   系统   发送   屏蔽   unix   

原文地址:https://www.cnblogs.com/Joezzz/p/9815748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!