使用timeval获取Linux 毫秒级计时

先补充一下,精确的sleep用usleep(1000 * seconds );

今天因为这个函数,又费了很多时间,每次用这个函数,总是会这样,上网查,精简代码,使用,忘记,NND。

今天在cublog上看到一个兄弟的遭遇也是和我一样的,特此mark。

http://blog.chinaunix.net/u3/93926/showart_1874757.html

原帖内容 -->

这个问题不止遇见了一次了,但是总是懒得记录下来,所以每次碰到总是要写个test代码去测试一下。

问题如下:
在debian linux的man页中对gettimeofday函数的说明中,有这样一个说明:

DESCRIPTION The functions gettimeofday and settimeofday can get and set the time as well as a timezone. The tv argument is a timeval struct, as specified in <sys/time.h>: struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ };

其中对tv_usec的说明为时间的毫秒部分。 而在实际中,该函数以及Linux内核返回的timeval
类型的时间值,tv_usec代表的是微秒精度(10的-6次方秒)。

测试代码如下:
#include <stdio.h> #include <sys/time.h> #include <time.h> int gettimeofday(struct timeval *tv, struct timezone *tz); int main(int argc,char * argv[]){ struct timeval tv; while(1){ gettimeofday(&tv,NULL); printf("time %u:%u/n",tv.tv_sec,tv.tv_usec); sleep(2); } return 0; }

返回结果为:

evil@dcenter:~/tmp$ ./a.out time 1142077839:903605 time 1142077841:910129 time 1142077843:920155 time 1142077845:930180 time 1142077847:940205 time 1142077849:950231 time 1142077851:960256 time 1142077853:970280 time 1142077855:980307 time 1142077857:990331 

 

你可能感兴趣的:(linux,timezone,Debian,struct,测试,linux内核)