最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

struct timeval和gettimeofday

来源:动视网 责编:小OO 时间:2025-10-02 19:22:52
文档

struct timeval和gettimeofday

structtimeval和gettimeofday()structtimeval结构体在time.h中的定义为:structtimeval{time_ttv_sec;/*Seconds.*/suseconds_ttv_usec;/*Microseconds.*/};其中,tv_sec为Epoch到创建structtimeval时的秒数,tv_usec为微秒structtimeval结构体在time.h中的定义为:structtimeval{time_ttv_sec;/*Seconds.*/s
推荐度:
导读structtimeval和gettimeofday()structtimeval结构体在time.h中的定义为:structtimeval{time_ttv_sec;/*Seconds.*/suseconds_ttv_usec;/*Microseconds.*/};其中,tv_sec为Epoch到创建structtimeval时的秒数,tv_usec为微秒structtimeval结构体在time.h中的定义为:structtimeval{time_ttv_sec;/*Seconds.*/s
struct timeval和gettimeofday()

struct timeval结构体在time.h中的定义为: struct timeval { time_t tv_sec; /* Seconds. */ suseconds_t tv_usec; /* Microseconds. */ }; 其中,tv_sec为Epoch到创建struct timeval时的秒数,tv_usec为微秒

struct timeval结构体在time.h中的定义为:

struct timeval

{

time_t tv_sec; /* Seconds. */

suseconds_t tv_usec; /* Microseconds. */

};

其 中,tv_sec为Epoch到创建struct timeval时的秒数,tv_usec为微秒数,即秒后面的零头。比如当前我写博文时的tv_sec为1244770435,tv_usec为 442388,即当前时间距Epoch时间1244770435秒,442388微秒。需要注意的是,因为循环过程,新建结构体变量等过程需消耗部分时 间,我们作下面的运算时会得到如下结果:

int i;

for (i = 0; i < 4; ++i)

{

gettimeofday(&tv, NULL);

printf("%d\%d\\n", tv.tv_usec, tv.tv_sec);

sleep(1);

}

442388 1244770435

443119 1244770436

443543 1244770437

444153 1244770438

前面为微秒数,后面为秒数,可以看出,在这个简单运算中,只能精确到小数点后面一到两位,或者可以看出,每进行一次循环,均需花费0.005秒的时间,用这个程序来作计时器显然是不行的,除非精确计算产生的代码消耗时间。

gettimeofday() -- 获取当前时间(保存在结构体timeval中) 

#include

#include

#include

int main(int argc, char * argv[]){

struct timeval tv; //(1)

while(1){

gettimeofday(&tv, NULL); //(2)

printf("time %u:%u\\n", tv.tv_sec, tv.tv_usec);

sleep(2);

}

return 0;

}

(1) struct--timeval

--------------------------------------------------

struct timeval {

time_t tv_sec; /* seconds */

suseconds_t tv_usec; /* microseconds */

};

millisecond 毫秒

microsecond 微秒

timeval表示一个时间点,比如:

timeval.tv_sec = 1 (s)

timevat.tv_usec = 500 000 (μs)

1:500 = 1s500000μs = 1.5s

(2) gettimeofday()

--------------------------------------------------

int gettimeofday(struct timeval *tv, struct timezone *tz);

The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone. 

The use of the timezone structure is obsolete; the tz argument should normally be specified as NULL.

(3) 运行结果:

--------------------------------------------------

time 1181788367:991487

time 1181788369:991602

表示睡眠2秒经过的精确时间为: 2s115μs

文档

struct timeval和gettimeofday

structtimeval和gettimeofday()structtimeval结构体在time.h中的定义为:structtimeval{time_ttv_sec;/*Seconds.*/suseconds_ttv_usec;/*Microseconds.*/};其中,tv_sec为Epoch到创建structtimeval时的秒数,tv_usec为微秒structtimeval结构体在time.h中的定义为:structtimeval{time_ttv_sec;/*Seconds.*/s
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top