波奇学Linux:信号的发送和保存

信号的发送的对象是pcb

task_struct{
int signal; //0000 0000 .... 0001

进程pcb中存在int型的signal来保存信号,用位图的方式,比特位的0,1表示是否收到信号

比特位位置表示信号的编号。

 发信号的本质就是修改task_struct的信号位图对应的比特位。

信号的作用是为了给用户层传递信息

信号的保存的原因:进程收到信号不会立即处理这个信号,要有个时间窗口

实时信号:立即处理,不能丢失

信号的保存

信号递达,信号未决,信号阻塞

信号递达(delivery):实际执行信号的处理的动作,即执行。

信号未决(pedding):信号从产生到递达之间的状态,就是把修改对应比特位,即信号传到进程。

进程可以选择阻塞(Block)某个信号,被阻塞的信号将处于pending状态,解除阻塞才进入递达状态。

忽略是递达后的状态和block不一样,忽略和自定义,默认是递达后三种处理方法

用户提供的方法可以覆盖handler数组的自定义方法

信号集类型sigset_t:封装好的位图

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值