• 信号概念


    程序在执行的时候,几乎任何时刻都会发生事件。
    信号通常用来向一个进程通知事件。
    信号是不可提前预知的,所以信号是异步的
    信号随时都可能发生,接收信号的进程也可以没有控制权。
    每个信号名都以SIG开头,信号名的定义在<signal.h>中。
     
     
    许多情况下都会出现信号,如硬件异常,非法的内存引用,软件异常等等。
    前面讲过的kill函数就是向目标进程发一个SIGKILL信号,就和kill命令一样。
    当进程收到一个信号,它可以对信号采取如下三种措施之一
      –忽略这个信号;
      –捕获这个信号,这需要执行一段称为信号处理器的特殊代码;
      –允许执行信号的默认操作。
     
    当信号发生的事件出现时,比如硬件异常,就会产生一个针对具体进程的信号。
    当进程对发送给它的信号采取措施的时候,就叫该信号被传送。
    产生信号和递送信号之间的时间间隔称为信号未决。
    递送信号可以被阻塞或延迟。
    一个信号一直被延迟,直到接触阻塞或接到进程对该信号的部署方式改变为忽略为止。
     
     
    信号的部署是指进程如何响应信号。
    进程可以忽略信号、用默认操作处理信号、响应这个信号。
    进程不能简单的通过判断一个变量,例如errno来判断是否出现了一个信号。
     
     
     
    常见信号说明

    信号名

    说明

    SIGABRT

    调用abort产生此信号,进程异常终止。

    SIGALRM

    调用alarm设置计时器超时时,产生此信号。

    SIGHLD

    一个进程终止时发送该信号给其父进程。

    SIGFPE

    表示一个算数运算异常,例如除以0

    SIGINT

    用户按Ctrl+C键,产生该信号

    SIGKILL

    这是个不能被捕捉或忽略的信号,kill 9发送该信号

    SIGPIPE

    如果在写到管道时读进程已经终止,就产生该信号

    SIGSEGV

    该信号指示进程进行了 一次无效的内存引用

    SIGTERM

    由kill命令(1)发送的系统默认终止信号

    SIGTSTP

    用户按Ctrl+Z键产生该信号

    SIGUSR1

    用户定义信号,可用于应用程序

    SIGUSR2

    用户定义信号,可用于应用程序

  • 相关阅读:
    API WAVE 专栏
    PCM数据格式(转)
    Windows 下音频数据采集和播放(转)
    java实现FFT变换(转)
    用74HC165读8个按键状态(转)
    机器人局部避障的动态窗口法(dynamic window approach) (转)
    TLD视觉跟踪算法(转)
    FFT算法在单片机中的使用&&LCD12864驱动
    Oracle442个应用场景-----------Oracle数据库物理结构
    Swift具体解释之三----------函数(你想知道的都在这里)
  • 原文地址:https://www.cnblogs.com/shichuan/p/4496331.html
Copyright © 2020-2023  润新知