1. 信号的基本概念
联系现实生活中的信号,我们可以理解为:Linux中的signal其实就是一种标志,操作系统知道这个标志代表着什么含义,以及知道遇见这个标志它应该采取怎样的动作。(如红灯信号,你知道红灯信号代表着不能通过马路,而你采取的动作就是等待)
1.1 信号的分类:
使用kill -l : 可以查看系统定义的信号列表。
总共有62种信号。1-31号信号称为普通信号,34-64号信号称为实时信号。
每个信号都有一个编号和一个宏定义的名称,这些宏定义可以在/usr/include/signal.h中找到。
以1号信号为例,它的宏定义为:#define SIGHUP 1
1.2 信号的常见处理方式
- 忽略信号
- 执行默认的信号处理动作
- 捕捉信号。提供一个信号处理函数,要求内核在处理信号时切换至用户态执行这个处理函数
2. 产生信号
信号通过以下三种方式产生,下面分别进行介绍:
2.1 通过终端按键产生信号
用户在终端按下某些键的时候,终端驱动程序会发送信号给前台进程。比如: