Time 通知ntp调整

Time 通知ntp调整,time,ntp,Time,Ntp,我的处境很奇怪,我需要一些关于NTP时间调整的指导 我有一台运行NTP守护进程的电脑(Red Hat),这台电脑通过局域网上的第2层时间服务器调整时间 我的电脑还通过串行端口(RS-232)连接到DVR。此设备和我的电脑时间需要同步 然而,过了一段时间,我的电脑和DVR的时钟开始漂移,所以我需要一种在我的电脑上检测时间调整的方法,并将同样的调整应用于DVR 有没有办法做到这一点 我希望找到一种订阅操作系统级别的事件的方法,以便在Red Hat上更改系统时钟。(如果这对RedHat是可能的话)

我的处境很奇怪,我需要一些关于NTP时间调整的指导

我有一台运行NTP守护进程的电脑(Red Hat),这台电脑通过局域网上的第2层时间服务器调整时间

我的电脑还通过串行端口(RS-232)连接到DVR。此设备和我的电脑时间需要同步

然而,过了一段时间,我的电脑和DVR的时钟开始漂移,所以我需要一种在我的电脑上检测时间调整的方法,并将同样的调整应用于DVR

有没有办法做到这一点

我希望找到一种订阅操作系统级别的事件的方法,以便在Red Hat上更改系统时钟。(如果这对RedHat是可能的话)

<> P>在Windows中,事件可能是有可能的,但是我不能在C++中找到对应的ReHAT。
非常感谢您的帮助。

大多数情况下,NTP服务器不会对系统时钟进行离散调整,它只会使用
adjtime
来降低或加快系统时钟,以便控制漂移率。NTP服务器可能一直在这样做,并且不会在每次进行调整时都告诉您

即使NTP服务器在进行调整时告诉您,这些信息对您也没有用处。DVR的时钟由不同的硬件驱动,因此具有不同的漂移率,需要在不同的时间进行不同的调整。理想情况下,这将由DVR上的NTP守护进程完成

NTP守护进程在某些情况下确实会导致时钟跳变。它可能发生在启动时,或者如果时钟偏离了方向,但这应该是一个非常罕见的事件。当它执行此操作时,可能会发出日志消息,因此一种可能是查看日志。另一种可能是不时比较
clock\u gettime(clock\u REALTIME)
clock\u gettime(clock\u monotic)
的结果。当您注意到这两个时钟之间的差值发生变化时,一定是因为有人使系统时间跳变了。但是要注意:结果会很不稳定,因为从您获取其中一个时钟到获取另一个时钟的时间都是不可预测且可变的


根据您的需要,您可以通过忽略系统时间并仅使用
clock\u gettime(clock\u MONOTONIC)
与DVR同步来实现所需的功能。那只钟保证不跳。但要当心!(再一次?!哈哈!)我相信在NTP守护进程的指导下,
CLOCK\u monotic
可能仍然会变慢或变快。

因为除了微软的API变更之外,似乎没有真正的解决方案,所以我添加了一个。如果您遇到同样的问题,请向上投票。

您是否知道ntp使用什么系统调用来设置离散时间?我在代码中没有找到任何对stime()或settimeofday()的引用。