代码之家  ›  专栏  ›  技术社区  ›  Ravi Gupta

linux下的系统时间变化检测

  •  0
  • Ravi Gupta  · 技术社区  · 14 年前

    7 回复  |  直到 5 年前
        1
  •  0
  •   caf    14 年前

    每次应用程序启动时,都可以将文件上的时间戳设置为当前系统时间。

        2
  •  4
  •   MarkR    14 年前

    你不能假设因为时钟倒转,它是由某人试图绕过你的许可证引起的。

    举个例子,有人不小心把时钟拨到了未来,然后又把它重置到正确的时间?

        3
  •  1
  •   ereOn    14 年前

    boost::posix_time::second_clock::local_time() )并将其与上次存储的值进行比较。如果你观察到 重要的 负差异,可能有人改变了系统时间。

    请注意,时间可以在一个系统上更改的正当理由:计算机可以移动到另一个时区,系统可以使用NTP和计算机时钟滴答过快,所以NTP经常设置时间到一个较早的值或夏时制时间发生变化。

    据我所知,这个问题没有优雅可靠的解决办法。

        4
  •  1
  •   derhoch    14 年前

    clock\u gettime(clock\u MONOTONIC,&ts)提供独立于系统时间的timespec。您可以使用它来计算时钟和实时时间之间的偏移量,如果该偏移量发生变化,则表示系统时间发生了变化

        5
  •  1
  •   Phil Hannent    14 年前

    然而,没有100%的方法证明时间转移,在我有限的经验,任何盗版功能通常伤害帮助台和您的客户比它伤害海盗。

        6
  •  0
  •   Martin Hennings    14 年前

    如果系统时差为正,您可以设置一个计时器,每n个时钟周期检查一次(一个时钟周期=一个(多个)cpu时钟周期)。。。应该足够每秒钟甚至每分钟检查一次。通常计时器不应该占用那么多资源。你必须确保计时器使用的是滴答声,而不是系统时钟。。。

        7
  •  0
  •   Jens Gustedt    14 年前

    一般来说,你无法始终如一地检测到这样的事情,因为人们可能只是重新启动有问题的机器。

    在一个古老的地方,我工作过一次,一个管理员因为忘记更新编译器的许可证而更改了时钟。不是个好主意。基本上,这台机器很快就完全无法使用了:NFS被搞砸了, make 没用,麻烦多了。

    所以我猜你的问题更多的是理论性的。在现实生活中,没有理智的人会这么做。