Linux——进程信号详解

目录

一.进程信号的理解

1.1定义:

1.2举例:

1.3总结:

二.进程信号地使用:

        2.1信号种类:

        2.2而操作系统向进程发送信号地方式有四种:

 2.2.1以键盘的方式向进程发送信号

        接下来介绍一个系统调用函数signal():

2.2.2 以系统调用地方式向进程发送信号——kill函数

        abort():

        raise():

2.2.3硬件异常产生相应的信号

        论证:a/=0语句的错误是否来自于OS发送给进程的SIGFPE8号信号: 

        总结:

2.2.4.软件条件的产生

        alarm();

三.总结


     

一.进程信号的理解

1.1定义:

       Linux的信号是可执行程序在被CPU运行计算的过程中,发生了某些异常原因导致进程被迫中断的方式。

1.2举例:

        在现实生活中,我们有也可以处处见到信号:

1.过马路的红绿灯

2.微信的消息提醒

3.手机的来电铃声

4.闹钟声响起

5.母亲叫孩子起床

        以上这些例子全是信号的代表。   

        我拿第一个例子:过马路说吧:

        在过十字路口时,总是会有红绿灯,这是交通规则,管制着人车出行的安全。而我们能够识别出“红灯停绿灯行,黄灯亮了等一等”——这是第一点,因为老师或者父母教育过你,我们的大脑记住了对应的红灯、绿灯、黄灯的属性和需要做出的行为;绿灯亮了,表示我们可以过马路了,但是我不一定要立刻过这个马路!我可能正处于和朋友分别的情况下,我正在和他说离别的话语——这是第二点,当信号到来时,我可能正做着更重要的事情,没有办法立刻处理这个信号;但绿灯亮的那个瞬间,我明白了一件事,我记住了要在绿灯的有限时间内穿过这个马路,我可能在和朋友说离别话的5秒后过马路,也有可能在10秒后过,总之我有一个时间上的概念——这是第三点,信号的到来,就必须记住这个信号,它需要被处理;最后,我有多种选择,选择a:我按照一般逻辑,绿灯亮了就和朋友分别过了马路(默认动作);选择2:我玩着手机过马路(自定义动作);选择3:绿灯亮了我并不过马路(忽略动作)

在这个例子中,共有4个重点:

        1.人为什么能够识别出红绿灯的信号?——因为人们都认识它,对这些信号的产生会有相应的决策动作产生;

         2.信号到来时,是否需要立刻处理?  ——不一定要立刻处理,因为这时候你可能在做着比处理信号还重要的事情;

        3.在第二点的基础上,信号到来的话,该怎么办?——需要先记住这个信号!

        4.处理信号时,有几种方式?——a.默认动作、b.自定义动作、c.忽略动作

根据这4个重点,我们就可以很容易的了解到信号。

举一反三:

        我中午点外卖,一个小时后,外卖小哥到了我家楼下并打了电话。根据第一重点,因为我之前点过外卖,知道了外卖员给我打电话就需要我下楼去取了;根据第二点,我接到了电话,回复了外卖员说:"我马上就会下去!" 但我此时正在打游戏,已经在打至关重要的团战了,走不开。所以我没办法下去取,只能等到我打完团战才能去处理这件事;根据第三点,外卖员给我打了电话,我脑子里已经记下了需要取外卖这件事情;根据第四点,我接到了电话,团战正好打完,我下楼去取(默认动作);我正在打团战,过了3分钟才下去取(自定义动作);我打游戏上头了,忘了这件事,导致外卖员走了并且我也没吃上午饭(忽略动作)

          我小时候摔了一跤,哇哇大哭,被妈妈哄了半天没有用。妈妈不耐烦了,收起了慈爱的脸庞,用严厉的神情警告我说:“3、2、1!” 根据第一点,因为之前我也遇到过类似321的情况,但我没听话挨过好几次揍,我的大脑中死去的记忆突然又攻击了我~;根据第二点,我听到了妈妈说的3,2,1,我知道了妈妈生气了,要准备揍我了,但是我摔得太疼了,哭得停不下来,没办法安静;根据第三点,我记住了妈妈说得这句话,需要尽快安静下来;根据第四点,我听到妈妈说的话,停下来了,不哭了,免去一顿打(默认动作);我去找老爸求助,让老妈别打我(自定义动作);我头铁,老妈说了3,2,1 ,我还在哭,老妈又揍了我一顿(忽略动作)。

1.3总结:

        那么根据生活中例子,我们可以应用到Linux操作系统中去:

1.Linux的信号只能是由OS操作系统给进程发送,进程接收到信号所做的工作几乎都是中断,这是因为程序员写出的代码规则教给进程的,进程认识了各个信号,也就能做出相应的动作。

2.当进程收到了信号的时候,进程可能在执行着更重要的事情,该信号可能不会被马上进行处理。

3.进程本身一定是具有保持信号的能力,而保持的位置在PCB中。

4.进程对信号的到来,有三种对应方式:默认动作、自定义动作、忽略动作

对于第三点,一个信号发送给进程,进程会将信号进行保存,保存的位置在PCB中,证明:


二.进程信号地使用:

        2.1信号种类:

    在长时间学习Linux的过程中,我们已经在很多情况下默默见识过了信号,而常见的信号指令为kill指令,使用kill -l指令可以查看Linux操作系统中带有的所有信号列表:

如上:1-31是普通信号,34-64是实时信号。而之后我们常用的是1-31的信号。 

        2.2而操作系统向进程发送信号地方式有四种:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙予清的zzz~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值