Linux开发那些事儿(信号捕捉)
|
##signal函数 函数原型:
其中,sighandler定义是这样的:typedef void (*sighandler_t)(int); 函数作用:注册一个信号捕捉函数,也就是说,收到了某个信号,就执行它所注册的回调函数。 函数参数:
函数缺陷: 由于历史原因,该函数在不同版本的Unix和Linux系统中可能起到的效果不一样,所以跨平台性不佳,尽量避免使用它,取而代之使用通用性更好的sigaction函数。
##sigaction函数 函数原型:
函数作用:与signal函数类似,用来注册一个信号捕捉函数; 返回值: 成功:0;失败:-1,并设置errno; 参数:
这里特别要注意参数中struct sigaction结构体,这也是这个函数的难点所在,下面详细说明: struct sigaction结构体 原型:
这个结构体成员很多,又很多是回调函数的形式,令人望而生畏。但实际上,需要掌握的只有三个。 首先,sa_restorer和sa_sigaction这两个成员一个已经被弃用了,另一个很少使用,所以我们暂且不管它们,重点掌握剩下的三个。 (1) sa_handler:指定信号捕捉后的处理函数,即注册回调函数。该成员也可以赋值为SIG_IGN,表示忽略该信号,也可注册为SIG_DFL,表示执行信号的默认动作。 (2) sa_mask:临时阻塞信号集(或信号屏蔽字)先来看这样一个情景:
某个信号已经注册了回调函数,当内核传递这个信号过来时,会先经过一个阻塞信号集,先阻塞掉部分信号。再去执行对应的回调函数。 (编辑:三门峡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


