1.信号注册函数——高级版
sigaction 的函数原型:
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
struct sigaction {
void (*sa_handler)(int); //信号处理程序,不接受额外数据,SIG_IGN 为忽略,SIG_DFL 为默认动作
void (*sa_sigaction)(int, siginfo_t *, void *); //信号处理程序,能够接受额外数据和sigqueue配合使用
sigset_t sa_mask;//阻塞关键字的信号集,可以再调用捕捉函数之前,把信号添加到信号阻塞字,信号捕捉函数返回之前恢复为原先的值。
int sa_flags;//影响信号的行为SA_SIGINFO表示能够接受数据
};
//回调函数句柄sa_handler、sa_sigaction只能任选其一
sigaction 是一个系统调用,根据这个函数原型,在函数原型中,
第一个参数signum
应该就是注册的信号的编号;
第二个参数act
如果不为空说明需要对该信号有新的配置;
第三个参数oldact
如果不为空,那么可以对之前的信号配置进行备份,以方便之后进行恢复。
struct sigaction