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开始到当前的微秒数

参考文章1:gettimeofday()和time()的区别

参考文章2:C语言如何获得精确到毫秒的时间

以上是关于C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)的主要内容,如果未能解决你的问题,请参考以下文章

C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)

Linux时间函数之gettimeofday()函数之使用方法

c语言linux打印运行时间(耗时) gettimeofday()timeval<sys/time.h>

C语言实现linux系统获取高精度时间差(毫秒)

C语言实现linux系统获取高精度时间差(毫秒)

do_gettimeofday使用方法