Linux 信号(signal):信号的理解

一、理解信号

1.信号是什么

  Linux中的信号其实和日常生活中的信号还是挺像的,LInux中的信号是一种事件通知机制,通知进程发生了某个事件。进程接收到信号后,就会中断当前的操作,然后去处理这个信号所代表的事件。

  每种信号都有自己对应的事件,信号有多种,事件也就有多种。进程要处理事件,自然就需要有对应的处理方法。每种信号都有自己对应的处理方法,这个方法其实就是信号的处理函数。进程收到信号后,就去执行这个信号对应的处理函数。

  用一个生活中的例子来理解信号:以过马路为例,过马路就是一个进程,走到马路边看到信号灯是红色(红色信号灯就是信号),这个信号告诉我们现在不能过,要等一会(红色信号的处理函数就是停下来等待绿灯)。因此我们过马路的这个进程就被打断了,这个信号的处理函数就是等待绿灯的到来,等这个信号所对应的函数执行结束,我们就可以继续过马路了。

  信号其实是宏,如下图所示:

在这里插入图片描述

2.信号的种类

 查看信号的命令:

  • kill -l

  如图:Linux中共64种信号,1 ~ 31是非可靠信号(非实时信号),32 ~ 64 是可靠信号(实时信号)。

信号种类

实时信号与非实时信号的区别:

  1. 实时信号优先级高,系统首先处理实时信号。
  2. 实时信号会记录信号发送的次数,而非实时信号不会。(这个很重要)

二、简单理解信号的生命周期

  信号的生命周期分为四部分:

  • 产生:就像红灯亮了,这就产生了一个信号
  • 注册:就是让进程知道自己收到了某个信号。就像是看到红灯后,我们就知道我们收到了红灯信号。
  • 注销:进程在处理信号之前将信号的存在痕迹抹除。
  • 处理:调用信号的处理函数

猜你喜欢

转载自blog.csdn.net/weixin_57761086/article/details/128780661