Linux多进程15-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; // 每个间隔时间 Interval for periodic timer
struct timeval it_value; // 延迟多长时间执行 Time until next expiration
};
struct timeval { // 时间的结构体
time_t tv_sec; // 秒 seconds
suseconds_t tv_usec; // 微秒 microseconds
};
例如: 过10S (it_value)后, 每隔2秒 (it_interval)定时一次
- old_value: 记录上一次的定时时间参数(一般不使用, 指定NULL)
- 返回值: 0成功, -1失败并设置错误号
#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
//过3S后, 每隔2S定时一次
int main(int argc, char const *argv[])
{
struct itimerval new_value;
//设置间隔时间
new_value.it_interval.tv_sec = 2;
new_value.it_interval.tv_usec = 0;
//设置延迟时间, 3S后开始第一次定时
new_value.it_value.tv_sec = 3;
new_value.it_value.tv_usec = 0;
int ret = setitimer(ITIMER_REAL, &new_value, NULL);
if (ret == -1)
{
perror("setitimer err");
exit(0);
}
printf("定时器开始了...\n");
getchar();
return 0;
}
运行
$./setitimer
定时器开始了... #3s 后程序结束
闹钟
本文作者:言叶以上
本文链接:https://www.cnblogs.com/anqwjoe/p/17409746.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2018-05-17 Vue.js 基础知识