sigaction函数
#include <signal.h>
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
void (*sa_restorer)(void); //扩展,一般不用
};
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<stdlib.h>
void handler(int s) {
printf("signal is %d\n", s);
}
int main() {
struct sigaction act;
act.sa_handler = handler;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(SIGINT, &act, NULL);//sigaction也实现signal的功能,且更安全强大
while (1) {
printf(".");
sleep(1);
fflush(stdout);
}
return 0;
}