【Unix/Linux】计时器-sys/time.h

本文深入讲解了进程通过ITIMER_REAL、ITIMER_VIRTUAL和ITIMER_PROF三种方式计时的方法。介绍了如何利用<sys/time.h>中的结构体itimerval和函数setitimer()进行时间记录,详细解析了结构体成员及函数参数的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计时器

进程可通过三种方式计时

ITIMER_REAL: 真实时间(使用者实际经历的时间) ITIMER_VIRTUAL:程序在用户态实际执行的时间
ITIMER_PROF:由该进程进入的内核处理所用时间+VIR

使用<sys/time.h>
可方便地完成上述三种时间记录
包含结构体itimerval和函数setitimer()

结构体itimerval包含两项设置
	a:剩余时间
		对应成员:struct  timerval it_value
	b:重装时间(单片机中的加法计数器重装)
		对应成员:struct  timerval it_interval
这两项设置都是以 (秒+微秒)的数值组合 设置时间
	就是说,结构体timerval包含两项成员
		a:   tv_sec
		b:tv_usec
		都用long类型数值来填充即可

  • 具体写成:
struct itimerval S;//声明一个itimerval结构S

/*设置第一次倒计时1.5s = 1s+0.5s*/ 
S.it_val.tv_sec = 1// 1s
S.it_val.tv_interval = 50000// 50000us = 0.5s

/*设置重复(第一次之后自动开始的倒计时)
			倒计时1.5s = 1s+0.5s*/ 
S.it_interval.tv_sec = 1// 1s
S.it_interval.tv_interval = 50000// 50000us = 0.5s

  • 完成结构体写入后,调用函数setitimer()以S的设置启动计时器
Setitimer(ITIMER_REAL,&S,NULL;
  • 解释一下三个位置的参数:
    1:计时器类型(见开头)
    2:计时器设置(结构体指针)
    3:需要用S的设置替换的结构体的指针,一般没有需要就用NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值