信号的基本概念
软件模拟中断,进程接受信号后做出相应响应
如何产生信号
- 硬件
- 执行非法指令
- 访问非法内存
- 驱动程序
- 。。。
- 软件
- 控制台:
- CTRL+C:中断信号
- CTRL+|:退出信号
- CTRL+:停止信号
- kill命令
- 程序调用kill()函数
- 控制台:
信号处理方式:
- 忽略:进程当信号从来没发生过
- 捕获:进程会调用相应的处理函数,进行相应的处理
- 默认:使用系统默认处理方式来处理信号
常用信号
信号名 | 信号编号 | 产生原因 | 默认处理方式 |
---|---|---|---|
SIGHUP | 1 | 关闭终端 | 终止 |
SIGNT | 2 | CTRL+C | 终止 |
SIGQUIT | 3 | CTRL+\ | 终止+转储 |
SIGABRT | 6 | abort() | 终止+转储 |
SIGPE | 8 | 算术错误 | 终止 |
SIGKILL | 9 | kill -9 pid | 终止,不可捕获/忽略 |
SIGUSR1 | 10 | 自定义 | 忽略 |
SIGSEGV | 11 | 段错误 | 终止+转储 |
SIGUSR2 | 12 | 自定义 | 忽略 |
SIGALRM | 14 | alarm() | 终止 |
SIGTERM | 15 | kill pid | 终止 |
SIGCHLD | 17 | (子)状态变化 | 忽略 |
SIGSTOP | 19 | CTRL+Z | 暂停,不可捕获/忽略 |
pkill命令:
通过进程名终止进程
pkill 进程名
例: