自Linux内核版本3.10起,函数clock_gettime()
现在接受CLOCK_TAI
。
我没有找到这个时钟的详细说明。它的时代是什么?
编辑1 :刚刚比较了我的Linux 3.19操作系统上的CLOCK_REALTIME和CLOCK_TAI的输出,它返回完全相同的值(1442582497)! CLOCK_REALTIME是否在闰秒递减?
编辑2 :根据this article,CLOCK_TAI与(命名错误的)CLOCK_REALTIME之间的区别应该是闰秒数。
编辑3 :编辑2中引用的文章解释了CLOCK_TAI
和CLOCK_REALTIME
同时出现的原因。重点在于我。
在Ask Ubuntu上获得的对于可以使用TAI时间而不是UTC的应用程序,内核提供了一个特殊的CLOCK_TAI时钟,它包含闰秒,并且不需要在闰秒后进行纠正,从而避免了向后跳转的问题时间完全。它被实现为以CLOCK_REALTIME的固定积分偏移运行的时钟,当CLOCK_REALTIME时钟在闰秒上退回时,该时钟原子递增1。它是在Linux内核版本3.10中引入的,可以与RHEL7中提供的内核一起使用。 请注意,CLOCK_REALTIME的偏移量在启动时初始化为零,并且ntpd和chronyd都默认将其设置为正确的值(当前为35)。在应用程序中切换到CLOCK_TAI当然需要修改代码,也可能是使用Unix表示时间的所有协议。
编辑4 :This answer澄清了一切。