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;;
历史博文
- 20081126 mtk imy - 2009
- 20070227 php mvc 信息 - 2007
- 0321 error C2061 error C2091 THIS_FILE NEW - 2006
- SKOE2G Design开发设想1 - 2005