信号概念理解:信号就是一种中断,通知我们发生了某件事情,打断我们当前的操作,让我们去处理这个事情。信号能够通知事件的发生,进程必须能够识别这个信号,并且信号与事件一一对应
查看信号:kill -l
信号的分类:62种
非可靠信号:1~31信号,从Unix就有的信号,每个信号在系统中都有对应的事件,不可靠的,有可能会丢失的事件
可靠信号:34~64信号,后来扩充的32种信号,扩充定义的时候并没有具体对应的事件,可靠的不会丢失的事件
信号的生命周期,有四个阶段:信号的产生–>信号的注册–>信号的注销–>信号的处理
1.信号的产生
硬件:ctrl+C crtl+\ crtl+Z
硬件异常产生信号:除数为0
软件:kill命令,kill杀死一个进程的原理,就是,发送了一个终止信号给指定的进程,进程收到这个信号,去处理事件,结果是退出进程。例:kill ( int pid, int signum) / raise ( int signum ) / abort ( ) / alarm ( int seconds ) / sigqueue( )
软件异常产生信号:如在管道中所有读端被关闭,继续写就会发送一个SIGPIPE的信号
2.信号的注册
概念理解:在进程pcb中标记,这时候有一个信号待处理,进程pcb中有一个信号的pending位图----未决信号集合,以0/1标记进程中当前是否收到了哪些信号
未决:一种信号的处理状态,这种状态指的是收到了信号,但是还未处理的状态
信号注册再理解:就是在pending位图中将指定信号的相应比特位置1,并且将每个信号封装一个sigqueue节点,添加到进

本文深入探讨了Linux下信号的生命周期,包括信号的产生、注册、注销和处理。详细介绍了各种信号来源,如硬件中断、软件异常和kill命令,并分析了信号的分类,如非可靠和可靠信号。此外,还讲解了信号处理的不同方式,如默认处理、忽略处理和自定义处理。同时,阐述了信号的捕捉和阻塞机制,强调了无法阻塞的SIGKILL和SIGSTOP信号。
最低0.47元/天 解锁文章
886

被折叠的 条评论
为什么被折叠?



