C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)相关的知识,希望对你有一定的参考价值。
UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒。Epoch是指定为1970年1月1日凌晨零点零分零秒,格林威治时间。目前大部份的UNIX系统都是用32位来记录时间,正值表示为1970以后,负值则表示1970年以前。下面看下time.h中的time函数,sys/time.h中的gettimeofday函数
#include<time.h>
#include<sys/time.h>
#include<stdio.h>
int main()
time_t tt;
struct timeval tv;
tt=time(NULL);
gettimeofday(&tv,NULL);
printf("time_t sec is %ld\\n",tt);
printf("gettimeofday tv_sec is %ld, usec is %ld \\n",tv.tv_sec,tv.tv_usec);
在linux ubuntu虚拟机上编译运行:
time_t sec is 1638791279
gettimeofday tv_sec is 1638791279, usec is 408521
PS: time 与 gettimeofday 两个函数得到的都是从Epoch开始到当前的秒数(tt=tv.tv_sec
),而后者还能得到更精细的微秒级结果,即tv_sec*(10^6)+tv_usec
为从Epoch开始到当前的微秒数
以上是关于C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)的主要内容,如果未能解决你的问题,请参考以下文章
C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)
Linux时间函数之gettimeofday()函数之使用方法