欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux下获取时间函数gettimeofday()

程序员文章站 2022-03-09 21:45:02
...
选择gettimeofday()函数的原因:精度比timer()函数高很多,time函数只精确到秒,而gettimeofday精确到微妙,足以满足各种所需,虽然有精度比它更高的,但是它的系统调用开销相对更小

函数原型

#include<sys/time.h>
int gettimeofday(struct timeval* tv, struct timezone* tz);

成功返回0, 失败返回-1, 出错返回errno

参数意义

  • tv是指向下面这个结构体的一个指针
struct timeval 
{
    time_t tv_sec;
    suseconds_t tv_usec;
}

time_t 和suseconds_t 都是lont int 类型, tv_sec 表示Epoch 秒数, 而tv_usec 是额外的微妙精度

  • tz 是一个历史产物, 早期的UNIX实现用来获取系统的时区信息, 目前已经被废弃了, 应始终将其置为NULL.

示例

#include <sys/time.h>
#include <iostream>
using namespace std;

int main() 
{
    struct timeval tv;
    gettimeofday(&tv, nullptr);

    cout << "seconds since 00:00:00, 1 Jan 1970 UTC: " << tv.tv_sec << endl;
    cout << "Additional microsecondsss: " << tv.tv_usec << endl;
}
lzj@lzj-PC:~$ ./a.out
seconds since 00:00:00, 1 Jan 1970 UTC: 1533287671
Additional microsecondsss: 161258