Linux 信号机制详解
1. 信号的作用
信号是一种非常简短的消息,可发送给一个或一组进程。通常,传递给进程的唯一信息是标识信号的编号,标准信号中没有用于传递参数、消息或其他附带信息的空间。
信号主要有两个用途:
- 让进程知晓特定事件已发生。
- 强制进程执行其代码中包含的信号处理函数。
这两个用途并非相互排斥,因为进程通常需要通过执行特定例程来响应某些事件。
Linux 2.4 为 80 x 86 架构处理的前 31 个信号如下表所示:
| # | 信号名称 | 默认动作 | 注释 | POSIX |
| — | — | — | — | — |
| 1 | SIGHUP | 终止 | 挂断控制终端或进程 | 是 |
| 2 | SIGINT | 终止 | 来自键盘的中断 | 是 |
| 3 | SIGQUIT | 转储 | 来自键盘的退出 | 是 |
| 4 | SIGILL | 转储 | 非法指令 | 是 |
| 5 | SIGTRAP | 转储 | 调试断点 | 否 |
| 6 | SIGABRT | 转储 | 异常终止 | 是 |
| 6 | SIGIOT | 转储 | 等同于 SIGABRT | 否 |
| 7 | SIGBUS | 转储 | 总线错误 | 否 |
| 8 | SIGFPE | 转储 | 浮点异常 | 是 |
| 9 | SIGKILL | 终止 | 强制进程终止 | 是 |
| 10 | SIGUSR1 | 终止 | 供进程使用 | 是 |
| 11 | SIGSEGV