Linux系统编程 99 信号屏蔽字和未决信号集

这篇博客探讨了信号处理中的关键概念,包括阻塞信号集和未决信号集。阻塞信号集用于标记被屏蔽的信号,防止其在特定期间递达。未决信号集则记录已产生但尚未处理的信号。当信号产生,如Ctrl+C触发的SIGINT,其在未决信号集中被标记,等待处理。信号处理有默认、自定义和忽略三种方式。通过`kill -l`可以查看所有可用信号。博客还介绍了信号的产生、递达和处理流程,以及信号的五种产生方式。

学习笔记

阻塞信号集(信号屏蔽字)概念
将某些信号加入集合,对他们设置屏蔽,当屏蔽某个信号后,再收到该信号,该信号的处理将推后(解除屏蔽后)

未决信号集概念
1.信号产生,未决信号集中描述该信号的位立刻翻转为1,表信号处于未决状态。当信号被处理对应位翻转回0.这一时刻往往非常短暂。
2.信号产生后由于某些原因(主要是阻塞)不能递达,这类信号的集合称之为未决信号集,在屏蔽解除前,信号一直处于未决状态。

阻塞信号集和未决信号集都在PCB中

截图1

 

 

 


未决信号集和信号屏蔽字的本质都是位图

ctrl + c 会得到2号信号(终止信号)时候,2号信号的未决信号集为0->1(默认为0)

截图2

 

内核发现2号信号的未决信号集中的2号信号为1(未决)
内核马上对信号进行处理
信号的处理有三种
1.默认
2.自定义
3.忽略

处理完之后,内核将负责将该信号翻转成0,信号处理完了。
截图3

 

产生信号 
发送信号
递达
处理结束
这个过程就结束了。


假如说将阻塞信号集设置为屏蔽,屏蔽信号集中的2号信号为1,
代表被阻塞不能递达,一直处于未决态。需要等信号屏蔽字修改(1-》0)
这个时候,未决信号集才有机会翻转为0

注意未决信号集也变为1

截图4

 


产生信号方式有5种
1.按键
2.系统调用产生
3.软件条件产生
4.硬件异常产生 总线错误
5.命令产生

信号递达之后,就会被处理掉。
未决可以理解为:信号产生到信号递达之间的状态
递达:产生到送达到进程。这个时候信号会直接被处理掉


信号的处理有三种
1.默认
2.自定义(捕捉)
3.忽略


可以通过kill-l 查看信号有哪些
阻塞信号集本质是位图,用于记录信号被屏蔽的状态,一旦
未决信号在未被屏蔽解除之前,一直处于未决状态。

未决信号集本质也是位图,用于记录信号的处理状态。
该信号集中的信号表示已经产生,但是尚未被处理。

查看常用的信号有哪些
通过kill -l 查询

$kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX    

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值