Linux进程信号——信号的捕捉、保存、处理

信号的基本概念

  • 信号递达:实际处理信号的动作
  • 信号未决:信号从产生到递达之间的状态
  • 信号阻塞:不会被递达的信号
  • 信号忽略:递达的动作是忽略

阻塞和忽略的区别

阻塞指的是这个信号不会被递达,也就是不对其进行操作处理

忽略指的是这个信号可以递达,只是处理的动作是忽略

信号保存

在这里插入图片描述

在进程的PCB中有如下三个数据结构和信号相关

前两个是位图,后一个是数组

block位图

这个位图表示哪些信号被阻塞,0或1表示是否被阻塞,某一个位置表示对应的信号

pending位图

这个位图用来存储收到的信号,0或1表示是否收到,某一个位置表示对应的信号,这个位图也称之为信号集,也就是未决的情况

handler数组

这个数组是一个函数指针数组,里面的内容是函数指针,下标表示收到n号信号,调用的处理方法就是对应的函数指针

SIG_DFL宏代表这个函数是默认处理函数

SIG_IGN宏代表收到这个信号后,进行忽略这个信号

信号处理

在这里插入图片描述

这个函数可以手动更改handler数组,让进程在捕捉到对应信号的时候调用我们指定的函数处理

#include<iostream>
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栖林_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值