信号(Signal)
1. 信号基本概念
信号是软件中断,用于内核 / 进程通知某进程发生事件。
进程对信号的三种处理方式:
默认动作(终止、暂停、忽略等)
忽略(SIGKILL、SIGSTOP 不可忽略)
自定义捕捉(注册信号处理函数)
2. 常用信号
| 信号名 | 编号 | 说明 | 备注 |
|---|---|---|---|
| SIGINT | 2 | 终端中断Ctrl+C | 常用 |
| SIGQUIT | 3 | 终端退出Ctrl+\ | 产生 core |
| SIGKILL | 9 | 强制杀死进程 | 不可捕捉、不可忽略 |
| SIGALRM | 14 | 闹钟超时 | |
| SIGUSR1 | 10 | 用户自定义信号 |
3. 信号相关函数
signal (信号,处理方式)
SIG_IGN:忽略信号SIG_DFL:恢复默认处理自定义函数:捕获信号
kill (pid, 信号)
向指定进程发送信号
atoi()
字符串转整数(命令行传信号 / 进程号)
4. 信号关键特性
SIGKILL (9)、SIGSTOP (19) 不能被捕获、忽略、阻塞
信号处理函数执行期间,同种信号会被暂时阻塞
信号是异步的:什么时候来不确定