2010-02-12 175 views
2

当从时间服务器或由于DST更改而更新系统时间时,是否有办法获得通知?我正在进行API /系统调用或具有同等功能。linux - 检测系统时间的变化

在不使用SQL的情况下,优化为类似于SQL NOW()的值生成一个小时粒度的值是我们的一部分或我的努力。

+0

为什么你不需要使用系统调用来获取当地时间? – Romain 2010-02-12 12:12:21

+0

@Romain:对我的应用来说太贵了。 – 2010-02-12 12:31:10

+0

参见https://stackoverflow.com/questions/10496531/is-it-possible-in-c-c-in-linux-to-get-informed-when-a-specified-date-time-is-r – user 2016-09-01 17:21:47

回答

1

clock_gettime在最新的Linux系统上速度非常快,而且通常也非常精确;你可以使用clock_getres找出精确度。但对于小时级别的时间戳,gettimeofday可能更方便,因为它可以为您调整时区。

只需调用相应的系统调用,并在每次需要时间戳时将其划分为几小时; NTP的所有其他时间调整或任何已经为您完成的事情。

4

我不知道是否有通知系统时间的变化的一种方式,但

  • 系统时间存储为UTC,所以从来没有因为DST的变化变更通知。

  • 如果我的记忆是正确的,NTP deamon通常会通过改变速度来调整时钟,而不需要通知变化。

因此,只有在不常见的操作之后才会通知您。