MOOC视频中向老师讲解的三种处理方式:
捕获:执行进程指定的信号处理函数。
忽略:执行操作系统指定的缺省处理,如进程终止、进程挂起。
屏蔽:禁止进程接收和处理信号,举例为windows登录操作时,ctrl+c无法中断登录操作。
为了更深入的理解这三种处理方式,我查阅了互联网资料,进一步阅读了《Linux内核源码》中关于signal的章节,得出以下结论:
信号三种处理方式基本一致:
一、用户定义信号处理函数,当信号发生时,捕获信号,执行用户指定的处理函数;
二、执行内核默认的信号处理程序;
三、对进程不构成影响,进程忽略次信号,执行进程自己的行为。
第一条对应的MOOC视频中讲的“捕获”;第二条对应“忽略”;第三条对应“屏蔽”。
《Linux内核源码》中把第三条的功能定义为“忽略该信号”。原文如下:
与MOOC中对第三条的定义功能相同,第二条的定义名字相近,容易产生混淆,针对第二条和第三条的定义是否存在统一的定义方式?不至于在看到不同版本操作解释的时候,在名字上饶较大一圈。