1.信号是一种软件中断,它提供了一种处理异步事件的方法,
也是进程间惟一的异步通信方式。在Linux中没有32和33这两个信号。
其中编号34以上的是实时信号,34以下的信号是普通信号。
二。什么情况下引发信号:
1.键盘事件 ctrl +c ctrl +
2.非法内存 如果内存管理出错,系统就会发送一个信号进行处理
3.硬件故障 同样的,硬件出现故障系统也会产生一个信号
4.环境切换 比如说从用户态切换到其他态,状态的改变也会发送一个信号,这个信号会告知给系统
三。信号的处理方式
1.忽略此信号。
2.执行该信号的默认处理动作(终止该信号)
3.提供一个信号处理函数(自定义动作),要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(Catch)一个信号。
四。信号的优先级
信号实质上是软中断,中断有优先级,信号也有优先级。
如果一个进程有多个未决信号,则对于同一个未决的实时信号,内核将按照发送的顺序来递送信号。
如果存在多个未决信号,则值(或者说编号)越小的越先被递送。
如果即存在不可靠信号,又存在可靠信号(实时信号),
虽然POSIX对这一情况没有明确规定,但Linux系统和大多数遵循POSIX标准的操作系统一样,将优先递送不可靠信号。
信号的概念
最新推荐文章于 2023-02-24 20:46:40 发布