• 信号概述


    【摘自《Linux/Unix系统编程手册》】

    概述

    信号是事件发生时对进程的通知机制。有时也称之为软件中断。信号和硬件中断的类似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。

    一个(具有合适权限的)进程能够向另一个进程发送信号。信号的这一用法可作为一种同步技术,甚至是进程间通信(IPC)的原始形式。进程也可以向自身发送信号。然而,发往进程的诸多信号,通常都源于内核。

    针对每个信号,都定义了一个唯一的(小)整数,从1开始顺序展开。<signal.h>以SIGxxxx形式的符号名对这些整数做了定义。

    信号分为两大类:第一类,一组用于内核向进程通知事件;第二类,一组实时信号。

    信号因某些事件而产生,信号产生后,会于稍后被传递给某一进程,而进程也会采取某些措施来响应信号。在产生和到达期间,信号处于等待(pending)状态。

    通常,一旦内核接下来要调度该进程运行,等待信号会马上送达,或者如果进程正在运行,则会立即传递信号(例如,进程向自身发送信号)。然而,有时需要确保一段代码不为传递来的信号中断。为了做到这一点,可以将信号添加到进程的信号掩码中——目前会阻塞该组信号的到达。如果产生的信号属于阻塞之列,那么信号将保持等待状态,直至稍后对其解除阻塞(从信号掩码中移除)。进程可使用各种系统调用对其信号掩码添加和移除信号。

    表:term:信号终止进程;core:进程产生核心存储文件并退出;ignore:忽略该信号;stop:信号停止了进程;cont:信号恢复了一个已停止的进程

          名     称                   信   号   值                                           描                                               述                                                   SUSv3 默认
    SIGABRT 6 中止进程 core
    SIGALRM 14 实时定时器过期 term
    SIGBUS 7(SAMP = 10) 内存访问错误 core
    SIGCHLD 17(SA=20,MP=18) 终止或停止子进程 ignore
    SIGCONT 18(SA=19,M=25,P=26) 若停止则继续 cont
    SIGEMT undef(SAMP=7) 硬件错误   term
    SIGFPE 8 算术异常 core
    SIGHUP 1 挂起 term
    SIGILL 4 非法指令 core
    SIGINT 2 终端中断 term
    SIGIO 29(SA=23,MP=22) I/O时可能产生 term
    SIGPOLL        
    SIGKILL 9 必杀(确保杀死) term
    SIGPIPE 13 管道断开 term
    SIGPROF 27(M=29,P=21) 性能分析定时器过期 term
    SIGPWR 30(SA=29,MP=19) 电量行将耗尽   term
    SIGQUIT 3 终端退出 core
    SIGSEGV 11 无效的内存引用 core
    SIGSTKFLT 16(SAM=undef,P=36) 协处理器栈错误   term
    SIGSTOP 19(SA=17,M=23,P=24) 确保停止 stop
    SIGSYS 31(SAMP=12) 无效的系统调用 core
    SIGTERM 15 终止进程 term
    SIGTRAP 5 跟踪/断点陷阱 core
    SIGTSTP 20(SA=18,M=24,P=25) 终端停止 stop
    SIGTTIN 21(M=26,P=27) 后台进程组从终端读取 stop
    SIGTTOU 22(M=27,P=28) 后台进程组向终端写 stop
    SIGURG 23(SA=16,M=21,P=29) 套接字上的紧急数据 ignore
    SIGUSR1 10(SA=30,MP=16) 用户自定义信号1 term
    SIGUSR2 12(SA=31,MP=17) 用户自定义信号2 term
    SIGVTALRM 26(M=28,P=20) 虚拟定时器过期 term
    SIGWINCH 28(M=20,P=23) 终端窗口尺寸发生变化   ignore
    SIGXCPU 24(M=30,P=33) 突破对CPU时间的限制 core
    SIGXFSZ 25(M=31,P=34) 突破对文件大小的限制 core
  • 相关阅读:
    js获取页面所有搜索条件
    js计算两经纬度之间的距离
    .NET MVC 序列化与反序列化
    微信浏览器内禁止页面回退返回
    Winform组合ComboBox和TreeView实现ComboTreeView
    如何在Oracle触发器中使用查询语句
    DevExpress Winform:纯代码方式创建PopupMenu
    DevExpress GridView 鼠标热点追踪 高亮显示行
    Task.Wait and “Inlining”
    重置Visual Studio 2017的配置
  • 原文地址:https://www.cnblogs.com/jingyg/p/5179339.html
Copyright © 2020-2023  润新知