#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <signal.h> void fun(int signo) { printf("捕捉到信号:%d\n",signo); } int main() { int ret=-1; struct itimerval tmo; //第一次触发时间 tmo.it_value.tv_sec=3; tmo.it_value.tv_usec=0; //触发周期 tmo.it_interval.tv_sec=2; tmo.it_interval.tv_usec=0; //捕捉信号SIGALRM signal(SIGALRM,fun); //设置定时器 ret = setitimer(ITIMER_REAL,&tmo,NULL); if(-1 == ret) { perror("setitimer"); return 1; } //进程收到闹钟超时信号之后就会终止该进程 printf("按下任意键继续...\n"); getchar(); return 0; }
第一次隔3秒钟捕捉到信号、下一次且以后都是每隔2秒就会捕捉一次!
设置定时器,若进程结束了,那么这个定时器就没用了!