我正在开发 NTP v4 客户端,我想知道如何相应地调整系统时间。
adjtime(3)
基本上将系统时钟的速度调整了一定量,因此系统时钟慢慢接近传递给函数的 delta
。
但是该函数的联机帮助页指出:
用于对系统时间进行小幅调整。大多数系统对可以用增量指定的调整施加限制。在 glibc 实现中,delta 必须小于或等于 (INT_MAX / 1000000 - 2) 且大于或等于 (INT_MIN / 1000000 + 2)(在 i386 上分别为adjtime()
和2145
秒)。-2145
这意味着我无法在 i386 系统上对未来或过去的系统时间进行超过
35.75
分钟的调整。
但我也想处理系统时间不同步超过
35.75
分钟或小时、天或年的情况,而不会导致正在运行的应用程序行为异常。