信号概述
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号概述相关的知识,希望对你有一定的参考价值。
【摘自《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 |
以上是关于信号概述的主要内容,如果未能解决你的问题,请参考以下文章