通常你可以使用以下方式设置系统时钟http://linux.die.net/man/1/date。但是,它不提供毫秒精度(它有纳秒精度,但这在我的系统上不起作用)。还有其他方法可以设置系统时钟吗,还是我需要编写 C 程序来执行此操作?
答案1
如果ntpd
对你来说太重,尝试一下开放NTPD。它并未声称精确到亚微秒,但确实能使我的服务器时钟保持同步,误差在毫秒范围内。它使用 sntp,也更轻量一些。
正如其他人所说,硬件时钟确实会发生漂移,你不能只设置它们就能解决问题。
答案2
你应该使用ntpd
它将通过使用以下方式与时间服务器同步来保证你的系统准确网络时间协议 (NTP)(网络时间协议)。
答案3
即使所讨论的嵌入式系统不支持 NTP,您也必须实现类似的功能,或者非常频繁地执行 C 程序,以抵消两个时钟不可避免的漂移。此外,您的 C 程序必须考虑其自身的执行时间和两台计算机(嵌入式系统和服务器)之间连接的延迟,尤其是因为您需要亚微秒的精度。
您可能更快速地找到可以在两个系统之间配置的 ntpd 实例。用于此目的的工具始终存在于现代实时操作系统中(对于“始终”的某些定义)。