1.signal函数
typedef void (*sighandler_t)(int);
函数原型:
int sigaction(int signum, //捕捉的信号
const struct sigaction* act,
struct sigaction* oldact
struct sigaction{
void (*sa_handler)(int);
void (*sa_sigaction)(int,siginfo_t*,void*);
sigset_t sa_mask; // 在信号处理函数执行过程中,临时屏蔽指定的信号,若出现要屏蔽的信号,则执行完信号处理函数之后处理该信号
int sa_flags; //填0:表示调用sa_handler
void (*sa_restorer)(void);
不屏蔽信号:sigempty(&act.sa_mask);
设置屏蔽信号:sigaddset(&act.sa_mask,SIGQUIT);
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum,sighandler_t handler);
2.sigaction函数函数原型:
int sigaction(int signum, //捕捉的信号
const struct sigaction* act,
struct sigaction* oldact
);
void (*sa_handler)(int);
void (*sa_sigaction)(int,siginfo_t*,void*);
sigset_t sa_mask; // 在信号处理函数执行过程中,临时屏蔽指定的信号,若出现要屏蔽的信号,则执行完信号处理函数之后处理该信号
int sa_flags; //填0:表示调用sa_handler
void (*sa_restorer)(void);
};
一般需要处理的参数:sa_handler、sa_mask、sa_flags不屏蔽信号:sigempty(&act.sa_mask);
设置屏蔽信号:sigaddset(&act.sa_mask,SIGQUIT);