Chinaunix首页 | 论坛 | 博客
  • 博客访问: 709150
  • 博文数量: 260
  • 博客积分: 7033
  • 博客等级: 少将
  • 技术积分: 2633
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-13 23:15
文章分类

全部博文(260)

文章存档

2012年(2)

2011年(41)

2010年(78)

2009年(139)

我的朋友

分类: LINUX

2009-08-28 16:13:42

先补充一下,精确的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 :

    struct timeval {
          time_t       tv_sec;     /* seconds */
          suseconds_t   tv_usec; /* microseconds */
    };

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

测试代码如下:

#include
#include
#include

    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

本文出自 “Nathan的技术空间” 博客,转载请与作者联系!


阅读(2910) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~