UNIX和Linux系统中的信号处理详解
1. 信号概述
在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 |
如果进程收到这些信号中的一个而没有事先
超级会员免费看
订阅专栏 解锁全文
899

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



