### 12.1.1 干什么 `signal.h` 声明信号(signal,内核向进程异步投递的软通知,仅携带信号编号、不携带结构化数据)的注册、屏蔽与发送接口:登记某一信号到达时执行的处理函数,设置处理期间屏蔽的信号集,向进程或线程投递信号。它不分配资源,不传递数据,只提供通知机制。 它的职责边界是这样的。信号到达的时机由内核异步决定,程序无法预测打断点。定时器周期、异常处理的具体逻辑由程序自身实现,本库只提供投递与接管的接口。信号处置方式(捕获执行处理函数、忽略、默认动作)的记录保存在进程的信号处置表中。 ### 12.1.2 谁在调 * Nginx 等守护进程经 `sigaction` 注册 SIGHUP 处理函数,在不退出进程的前提下重载配置。 * 终端在用户按下 Ctrl+C 时,由终端驱动向前台进程组投递 SIGINT。 * `kill`、`pkill` 命令经 `kill` 系统调用向指定进程投递信号。 * Python、Java、Go 运行时注册 SIGINT、SIGTERM 处理函数实现优雅退出。 * 调试器经信号机制介入进程,断点异常经 SIGT