1.setitimer定时器函数介绍
#include <sys/time.h>
int setitimer(int which, const struct itimerval *new_value,
struct itimerval *old_value);
- 功能:设置定时器(闹钟)。可以替代alarm函数。精度微妙us,可以实现周期性定时
- 参数:
- which : 定时器以什么时间计时
ITIMER_REAL: 真实时间,时间到达,发送 SIGALRM 常用
ITIMER_VIRTUAL: 用户时间,时间到达,发送 SIGVTALRM
ITIMER_PROF: 以该进程在用户态和内核态下所消耗的时间来计算,时间到达,发送 SIGPROF
- new_value: 设置定时器的属性
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
过10秒后,每个2秒定时一次
it_interval = 2
it_value = 10
- old_value :记录上一次的定时的时间参数,一般不使用,指定NULL
- 返回值:
成功 0
失败 -1 并设置错误号
2.setitimer函数实现
#include <iostream>
#include <sys/time.h>
#include <cstdlib>
using namespace std;
int main()
{
struct itimerval new_value = {{2, 0}, {3, 0}};
int ret = setitimer(ITIMER_REAL, &new_value, NULL);
printf("定时器开始执行....\n");
if (ret == -1)
{
perror("setitimer");
exit(0);
}
getchar();
return 0;
}