首页 > 系统服务 > 详细

Linux中对信号的理解

时间:2014-04-05 13:43:53      阅读:572      评论:0      收藏:0      [点我收藏+]

        人们往往将信号称为“软件中断”。进程收到信号,就意味着某一事件或异常情况的发生。信号的类型很多,每一种分别标识不同的事件或情况。采用不同的整数来标识各种信号类型,并以SIGxxxx形式的符号名加以定义。
        内核、其他进程(只要具有相应的权限)或进程自身均可向进程发送信号。例如,发生下列情况之一时,内核可向进程发送信号。
        用户键入中断字符。
        进程的子进程之一已经终止。
        由进程设定的定时器(告警时钟)已经到期。
       进程尝试访问无效的内存地址。

       在shell中,可使用kill命令向进程发送信号。在程序内部,系统调用kill()可提供相同的功能。
收到信号时,进程会根据信号采取如下动作之一。
        忽略信号。
        被信号“杀死”
        先挂起,之后再被专用信号唤醒。


       就大多数信号类型而言,程序可选择不采取默认的信号动作,而是忽略信号(当信号的默认处理行为并非忽略此信号时,会派上用场)或者建立自己的信号处理器。信号处理器是由程序员定义的函数,会在进程收到信号时自动调用,根据信号的产生条件执行相应动作。
        号从产生直至送达进程期间,一直处于挂起状态。通常,系统会在接收进程下次获得调度时,将处于挂起状态的信号同时送达。如果接收进程正在运行,则会立即将信号送达。然而,程序可以将信号纳入所谓“信号屏蔽”以求阻塞该信号。如果产生的信号处于“信号屏蔽”之列,那么此信号将一直保持挂起状态,直至解除对该信号的阻塞。

 

本文出自 “云人生” 博客,请务必保留此出处http://ovcer.blog.51cto.com/1145188/1390677

Linux中对信号的理解,布布扣,bubuko.com

Linux中对信号的理解

原文:http://ovcer.blog.51cto.com/1145188/1390677

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!