#include <stdio.h>
#include <sys/time.h>
int main(){
struct timeval tv,tv1;
gettimeofday(&tv,NULL);
printf("s:%d ms:%d\n",(int)(tv.tv_sec),(int)(tv.tv_usec));
gettimeofday(&tv1,NULL);
printf("s1:%d ms1:%d\n",(int)(tv1.tv_sec),(int)(tv1.tv_usec));
printf("sec:%d ms:%d\n",(int)(tv1.tv_sec)-(int)(tv.tv_sec),(int)(tv1.tv_usec)-(int)(tv.tv_usec));
}
首先:man gettimeofday中的描述不是很清晰,tv结构体包含usec和sec,调用此函数后获取从1970年(1970.hh.min.sec.usec也就是1970年零点零风零秒)至今的时间换算成sec.usec的格式。所以sec和usec是一个整体。
#include <stdio.h>
#include <sys/time.h>
int main(){
struct timeval tv,tv1;
gettimeofday(&tv,NULL);
printf("s:%d ms:%d\n",(int)(tv.tv_sec),(int)(tv.tv_usec));
sleep(3);
gettimeofday(&tv1,NULL);
printf("s1:%d ms1:%d\n",(int)(tv1.tv_sec),(int)(tv1.tv_usec));
printf("sec:%d ms:%d\n",(int)(tv1.tv_sec)-(int)(tv.tv_sec),(int)(tv1.tv_usec)-(int)(tv.tv_usec));
}
如果usec超过1s就会进位到sec中。
一般用于计算程序执行时间段,在计算连接的心跳时间时用的多一些。