signal(SIGALRM, sigFunc); //当收到SIGALRM的信号就执行sigFunc函数
setitimer(ITIMER_REAL, &tv, NULL); //ITIMER_REAL--系统真实时间,根据传入的&tv参数确定,启动定时器后第一次多久发出sigalrm信号,和之后的,每一次发出sigalrm信号的时间间隔。。
#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <errno.h>
void sigFunc(int )
{
static int iCnt = 0;
printf("The %d Times: Hello world\n", iCnt++);
}
int main(void)
{
struct itimerval tv, otv;
signal(SIGALRM, sigFunc);
//调用setitimer()后,多久发出第一个SIGALARM信号
tv.it_value.tv_sec = 3; // 秒
tv.it_value.tv_usec = 0; // 微妙
//第一次执行之后,每隔1s+2us发出一个SIGALARM信号
tv.it_interval.tv_sec = 1;
tv.it_interval.tv_usec = 2;
if (setitimer(ITIMER_REAL, &tv, NULL) != 0)
printf("setitimer err %d\n", errno);
while(1)
{
sleep(1);
}
}