1、
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>
void catch_sig(int num)
{
printf("catch %d sig\n",num);
}
int main()
{
struct sigaction act;
act.sa_flags=0;
act.sa_handler = catch_sig;
sigemptyset(&act.sa_mask);
sigaction(SIGALRM,&act,NULL);
struct itimerval myit = {{3,0},{5,0}};//第一次5s 后面3s循环一次
setitimer(ITIMER_REAL,&myit,NULL);
while(1)
{
printf("who can kill me!\n");
sleep(1);
}
return 0;
}
2、sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)
SYNOPSIS
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);//注册捕捉函数
signum 捕捉信号
act 传入动作
3、
structure is defined as something like:
struct sigaction {
void (*sa_handler)(int);//默认信号处理函数,函数指针,捕捉函数要执行的(sa_flags=0)
void (*sa_sigaction)(int, siginfo_t *, void *); //可以发送附加信息的信号处理函数,sa_flag设置了SA_SIGINFO使用其处理
sigset_t sa_mask;//在此信号集中的信号在信号处理函数运行中会被屏蔽,函数处理完后才处理该信号
//执行捕捉函数期间临时屏蔽的信号集
int sa_flags;//可设参数很多,一般填0
void (*sa_restorer)(void);
};