改进的捕获信号机制
sigaction函数的功能是检查或修改与指定信号相关联的处理动作,该函数取代了signal函数。
#include <signal.h>
int sigaction(int signo, const struct sigaction *act, struct sigaction *oact);
成功返回0,失败返回-1。
参数signo是要检测或者修改其具体动作的信号编号(或同时执行这两种操作)。
如果act指针非空,则要修改其动作。
如果oact指针非空,则系统由oact指针返回该信号的上一个动作。
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
}
sigaction函数例子
void catch_Signal(int Sign) { switch (Sign) { case SIGINT: printf("SIGINT Signal\n"); exit(0); } } int signal1(int signo, void (*func)(int)) { struct sigaction act, oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; return sigaction(signo, &act, &oact); } int main(int arg, char *args[]) { signal1(SIGINT, catch_Signal); pause(); return 0; }