gettimeofday() 和 clock_gettime()函数 分析小结

    在上一篇文章《struct timeval 和 struct timespec 应用小结》我们分析了与linux系统时间相关的结构体定义,在linux系统C编程中,获取系统时间的api函数有两个,分别为:

int gettimeofday(struct timeval *tv, struct timezone *tz)

int clock_gettime(clockid_t, struct timespec *)

我们逐个分析:

1、gettimeofday()

     该函数把当前时间用 tv 结构体返回,当前时区的信息则放到tz所 指向的结构体。

      我们在使用该函数时,第2个参数一般为空(NULL),因为 一般只需要获取当前时间, 而不用获取时区信息。

      注意:返回的当前时间tv.tv_sec 是从1970年1月1日0 点开始的 “秒”数。

2、clock_gettime()

    该函数是用于获取特定 时钟的时间,常用如下4种时钟:

CLOCK_REALTIME                  //系统当前时间,从1970年1.1日算起
CLOCK_MONOTONIC                 //系统的启动后运行时间,不能被设置
CLOCK_PROCESS_CPUTIME_ID        //本进程运行时间
CLOCK_THREAD_CPUTIME_ID         //本线程运行时间

  我们经常用到的是CLOCK_REALTIME和CLOCK_MONOTONIC,其中CLOCK_REALTIME 跟 gettimeofday 返回的秒是一致的,都是相对于1970年1月1日的秒数。

区别:

1、clock_gettime 相比 gettimeofday的精度更高一些,前者精度到 纳秒,而后者精度到微秒。

2、clock_gettime可以通过 时钟选项而 得到不同参考下的时间,而gettimeofday则只有一种用途(获取当前系统时间)。

常规应用下,使用gettimeofday 即可获取 当前系统时间,对精度要求高,而且有不同需求的,可以使用clock_gettime。

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页