Linux 信号机制详解
信号基础
信号是 UNIX 和 Linux 系统针对某些情况生成的事件,进程接收到信号后可采取相应行动。“raise”表示信号的生成,“catch”表示信号的接收。
信号可由多种错误情况触发,如内存段违规、浮点处理器错误或非法指令等。同时,shell 和终端处理程序也会生成信号以引发中断,还能在进程间显式传递信号,用于信息传递或行为修改。信号的编程接口是统一的,信号可以被生成、捕获并处理,或者(至少部分信号)被忽略。
信号名称通过包含头文件 signal.h 来定义,都以 SIG 开头,常见信号如下表所示:
| 信号名称 | 描述 |
| ---- | ---- |
| SIGABORT | 进程中止 |
| SIGALRM | 闹钟信号 |
| SIGFPE | 浮点异常 |
| SIGHUP | 挂断信号 |
| SIGILL | 非法指令 |
| SIGINT | 终端中断信号,通常通过 Ctrl+C 触发 |
| SIGKILL | 强制终止信号,不能被捕获或忽略 |
| SIGPIPE | 向无读端的管道写入时产生 |
| SIGQUIT | 终端退出信号 |
| SIGSEGV | 无效内存段访问 |
| SIGTERM | 终止信号 |
| SIGUSR1 | 用户自定义信号 1 |
| SIGUSR2 | 用户自定义信号 2 |
如果进程收到这些信号却未提前安排捕获,将立即终止,通常还会创建一个核心转储文件
超级会员免费看
订阅专栏 解锁全文
3203

被折叠的 条评论
为什么被折叠?



