《Unix 环境高级编程(第三版)》读书笔记(第 6-10 章)
继续整理书架上的经典老书。相关代码和注释可以参考这里。
第 10 章 - 信号
- 信号:一种软中断,提供了一种处理异步事件的方法。
exec
函数将所有之前要捕捉的信号更改为默认动作(父进程中被标记为忽略的信号设置会被保留);fork
函数使得子进程继承父进程的信号处理方式;- 可能产生的方式:
- 硬件中断,如:键盘按键输入;
- 硬件异常,如:除 0、无效内存引用;
- 由
kill
系统调用发送的信号; - 软件条件引发的信号,如 SIGURG、SIGPIPE、SIGALRM 等。
- 不存在编号为 0 的信号。
- 信号的三种处理方式:
- 忽略信号(SIGKILL 与 SIGSTOP 无法被忽略);
- 捕捉信号;
- 执行系统默认动作。
- ISO C 定义的接口:
- 由于 ISO C 不涉及多进程、进程组以及中断 I/O 等,因此它对信号的定义十分模糊;
- 该函数可能保留有旧的 System V 不可靠信号语义,因此仅供向后兼容。
// #include <signal.h>
void (*signal(int sig, void (*func)(int)))(int);
评论 | Comments