20071027 linux 延时 2
http://www.yippeesoft.com

【gettimeofday/settimeofday系统调用】
 
功能描述:
gettimeofday获取当前时间和时区信息。settimeofday设置当前时间和时区信息。只有超级用户可以调用settimeofday,如果存在为NULL的参数,表示不改变某一项信息。

用法:
#include <sys/time.h>
#include <time.h>

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

 
参数:
tv:对于gettimeofday,指向存放返回的时间信息的缓冲区;对于settimeofday,指向需要设置的时间信息缓冲区。原型如下

struct timeval &leftsign;
    time_t      tv_sec;     /* 秒 */
    suseconds_t tv_usec;    /* 微妙 */
&rightsign;;

main()
&leftsign;
struct timeval tpstart,tpend;
float timeuse;
unsigned int i;

gettimeofday(&tpstart,NULL);

for(i=0;i<1000;i++)
pid_t fork();

gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%f\\n",timeuse);
exit(0);
&rightsign;

我们的平台支持返回服务器当前时间的功能,但是原来的实现只能是time_t mytime形式的,经过简单的localtime(mytime)和ctime(&mytime)处理.精度是不够的,为了返回高精度的时间,我使用了gettimeofday函数。这里一个简单的小例子说明了他的简单用法。记下来,希望以后用起来能够顺手些。
首先是申请struct timeval的变量,这个结构体包含两个子变量,tv_sec返回的是秒数,tv_usec返回的是微秒数。
#include <sys/time.h>
#include <stdio.h>
main()
&leftsign;
struct tpstart;

float micro;
char timeBuf[64];
char buf[64];
gettimeofday(&tpstart,NULL);

micro=tpstart.tv_usec;
snprintf(timeBuf, sizeof(timeBuf),"%f", micro);
strncat(buf, timeBuf,6);
printf("\\n%s",timeBuf);
printf("\\n%s\\n",buf);
exit(0);
&rightsign;

gettimeofday:获得是自00:00:00   UTC,   January   1,   1970开始到现在的时间,单位微秒 
  GetTickCount:获得的是自系统开始运行时到现在的时间,单位毫秒

  #include   <sys/select.h> 
  #include   <stdio.h> 
  #include   <stdlib.h> 
  
  void   Timer(int   sec,   long   usec) 
  &leftsign; 
          struct   timeval   tvSelect; 
          
          tvSelect.tv_sec   =   sec; 
          tvSelect.tv_usec   =   usec; 
  
          select(FD_SETSIZE,   NULL,   NULL,   NULL,   &tvSelect); 
  
  &rightsign;;

历史博文

标签:,
七月 31, 2008 at 9:13 上午 by yippee 1,011 次
Category: Info
Tags: ,