信号概念理解:信号就是一种中断,通知我们发生了某件事情,打断我们当前的操作,让我们去处理这个事情。信号能够通知事件的发生,进程必须能够识别这个信号,并且信号与事件一一对应
查看信号: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节点,添加到进