[原]Linux下获取时间函数gettimeofday()

吕子健 18/08/03 17:16:10
选择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
作者:weixin_36888577 发表于 2018/08/03 17:16:10 原文链接 https://blog.csdn.net/weixin_36888577/article/details/81391326
阅读:68