简介
Linux 支持的信号。某些信号依赖于体系结构(architecture)。
表格中的字符含义
| 符号 | 说明 |
|---|---|
| A | 缺省动作是结束进程 |
| B | 缺省动作是忽略这个信号 |
| C | 缺省动作是结束进程, 并且核心转储 |
| D | 缺省动作是停止进程 |
| E | 信号不能被捕获 |
| F | 信号不能被忽略 |
注:这里“结束” 指进程终止并释放资源,“停止” 指进程停止运行,但是资源没有释放,有可能继续运行。
信号说明
1、POSIX.1 描述了下列信号
| 信号 | 值 | 动作 | 说明 |
|---|---|---|---|
| SIGHUP | 1 | A | 在控制终端上是挂起信号, 或者控制进程结束 |
| SIGINT | 2 | A | 从键盘输入的中断 |
| SIGQUIT | 3 | C | 从键盘输入的退出 |
| SIGILL | 4 | C | 无效硬件指令 |
| SIGABRT | 6 | C | 非正常终止,来自abort |
| SIGFPE | 8 | C | 浮点运算例外 |
| SIGKILL | 9 | AEF | 杀死进程信号 |
| SIGSEGV | 11 | C | 无效的内存引用 |
| SIGPIPE | 13 | A | 管道中止:写入无人读取的管道 |
| SIGALRM | 14 | A | 来自 alarm 的超时信号 |
| SIGTERM | 15 | A | 终止信号 |
| SIGUSR1 | 30,10,16 | A | 用户定义的信号 1 |
| SIGUSR2 | 31,12,17 | A | 用户定义的信号 2 |
| SIGCHLD | 20,17,18 | B | 子进程结束或停止 |
| SIGCONT | 19,18,25 | 继续停止的进程 | |
| SIGSTOP | 17,19,23 | DEF | 停止进程 |
| SIGTSTP | 18,20,24 | D | 终端上发出的停止信号 |
| SIGTTIN | 21,21,26 | D | 后台进程试图从控制终端(tty)输入 |
| SIGTTOU | 22,22,27 | D | 后台进程试图在控制终端(tty)输出 |
2、 下面的信号定义在 SUSv2 中,而 POSIX.1 没有定义
| 信号 | 值 | 动作 | 说明 |
|---|---|---|---|
| SIGBUS | 10,7,10 | C | 总线错误 (不正确的内存访问) |
| SIGPOLL | A | I/O就绪事件 (Sys V). 等同于SIGIO | |
| SIGPROF | 27,27,29 | A | 系统资源定时器(Profiling timer)超时 |
| SIGSYS | 12,-,12 | C | 用错误参数调用系统例程 (SVID) |
| SIGTRAP | 5 | C | 跟踪/断点自陷 |
| SIGURG | 16,23,21 | B | 套接口上出现 urgent 情况 (4.2 BSD) |
| SIGVTALRM | 26,28 | A | 虚拟超时时钟 (4.2 BSD) |
| SIGXCPU | 24,30 | C | 超过了CPU时间限制 (4.2 BSD) |
| SIGXFSZ | 25,25,31 | C | 超过了文件大小限制 (4.2 BSD) |
注:这里的 SIGSYS,SIGXCPU,SIGXFSZ,以及某些系统上的 SIGBUS,Linux 的缺省动作(到2.3.27版)是 A(结束),而 SUSv2 声明是 C(结束且核心转储)
3、其他信号
| 信号 | 值 | 动作 | 说明 |
|---|---|---|---|
| SIGIOT | 6 | C | IOT 自陷. 等同于 SIGABRT |
| SIGEMT | 7,-,7 | ||
| SIGSTKFLT | -,16,- | A | 协处理器堆栈错误 |
| SIGIO | 23,29,22 | A | I/O 有效信号 (4.2 BSD) |
| SIGCLD | -,-,18 | 等同于 SIGCHLD | |
| SIGPWR | 29,30,19 | A | 电源无效 (System V) |
| SIGINFO | 29,-,- | 等同于 SIGPWR | |
| SIGLOST | -,-,- | A | 文件锁丢失 |
| SIGWINCH | 28,28,20 | B | 窗口大小调整信号 (4.3 BSD, Sun) |
| SIGUNUSED | -,31,- | A | 未使用的信号 (将成为 SIGSYS) |
注:- 指信号不存在;可能给出三个值,第一个值一般用于 alpha 和 sparc,中间的值用于 i386,ppc 和 sh,最后一个是 mips 的。信号 29 在 alpha 机上是 SIGINFO/SIGPWR,而在 sparc 机上是 SIGLOST。SIGIO 和 SIGLOST 有相同的值。后者在内核源码中被注释掉了,但是某些软件构造的进程仍然认为信号29是 SIGLOST。
