信号是Linux系统中用于进程间通信和进程控制的一种机制。当某个事件发生时,内核可以向进程发送信号,进程可以通过注册信号处理函数来捕获并对信号进行适当的处理。本文将介绍Linux信号的基本概念,包括如何生成信号和处理信号,并提供相应的源代码示例。
- 信号的基本概念
在Linux中,每个信号都由一个唯一的整数标识符表示。常见的信号包括SIGINT(中断信号,通常由Ctrl+C发送)、SIGTERM(终止信号)和SIGKILL(强制终止信号)等。可以使用命令kill -l
来查看系统支持的所有信号及其对应的整数值。
进程可以执行以下操作之一来处理信号:
- 忽略信号(Ignore):进程对该信号不做任何处理。
- 捕获信号(Catch):进程可以注册一个信号处理函数,当信号发生时,执行该函数。
- 默认操作(Default action):系统为每个信号定义了默认操作,例如终止进程、终止并生成核心转储文件等。
- 生成信号
在Linux中,信号可以由多种事件触发,例如用户操作、硬件异常或其他进程的请求。下面是一些常见的生成信号的情况:
2.1 用户操作