#include <sys/time.h>
int setitimer(int which,const struct itimerval *new_val,struct itimerval *old_value);
-功能:设置定时器(闹钟),可以替代alarm函数,精度微妙(us),可以实现周期。
-参数:
-which:定时器以什么时间计时
ITIMER_REAL:真实时间,时间到达,发送SIGALRM 常用
ITIMER_VIRTUAL:用户时间,时间到达,发送SIGVTALRM
ITIMER_FROF:以该进程在用户态和内核态下所消耗的时间来计算,时间到达,发送SIGPROF
-new_value:设置定时器的属性
struct itimerval{ //定时器的结构体
struct timeval it_interval; //设置间隔时间
struct timeval it_value; //延迟多长时间执行定时器
};
struct timeval{ //时间的结构体
time_t tv_sec; //秒数
suseconds_t tv_usec; //微秒
};
-old_value:记录上一次的定时的时间参量,一般不使用,指定NULL
-返回值:
成功 0;
失败 -1 并设置错误号。
所以实现的代码为:
1 #include <stdio.h>
2 #include <sys/time.h>
3 #include <unistd.h>
4 int main()
5 {
6 struct itimerval new_val;
7 //设置间隔时间,不过本次实验设置的间隔时间并没有起作用,或者作用不明显
8 new_val.it_interval.tv_sec=2;
9 new_val.it_interval.tv_usec=0;
10 //设置延长时间,3秒之后第一次定时
11 new_val.it_value.tv_sec=3;
12 new_val.it_value.tv_usec=0;
13 int val=setitimer(ITIMER_REAL,&new_val,NULL);//非阻塞
14 if(val==-1)
15 {
16 perror("setitimer");
17 exit(0);
18 }
19 printf("开始计时了...\n");
20 while(1)
21 {}
22 return 0;
23 }
觉得不错就点赞吧。