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

本文详细介绍了Linux系统中获取时间的两个API函数:gettimeofday()和clock_gettime()。gettimeofday()主要返回当前时间,常用于获取系统时间,其精度为微秒。而clock_gettime()不仅提供纳秒级精度,还能获取不同类型的时钟,如CLOCK_REALTIME和CLOCK_MONOTONIC等。CLOCK_REALTIME与gettimeofday返回的秒数相同,但clock_gettime更精确。在常规应用中,gettimeofday足以满足大部分需求,对于高精度和特殊场景,则推荐使用clock_gettime。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在上一篇文章《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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值