程序段:
#include <stdio.h>
#include <sys/time.h>
int main(int argc,char * argv[]){
int us = 0,ts = 0;
struct timeval start, end;
gettimeofday(&start, NULL);
usleep(1000*1000+234*1000);
gettimeofday(&end, NULL);
if(end.tv_usec < start.tv_usec){
ts = end.tv_sec - start.tv_sec - 1;
us = 1000000 - start.tv_usec + end.tv_usec;
}else{
ts = end.tv_sec - start.tv_sec - 1;
us = end.tv_usec - start.tv_usec;
}
printf("time:%d s,%d us",ts,us);
return 0;
}
函数gettimeofday(&tv,&tz):
把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中。
结构体:
timeval
struct timeval{
long tv_sec;/*秒*/
long tv_usec;/*微妙*/
};
timezone 结构定义为:
struct timezone{
int tz_minuteswest;/*和格林威治时间差了多少分钟*/
int tz_dsttime;/*type of DST correction*/
}
在gettimeofday()函数中tv或者tz都可以为空。如果为空则就不返回其对应的结构体。
函数执行成功后返回0,失败后返回-1,错误代码存于errno中。