2013-03-27 64 views
0

目前我能够与功能的帮助下获得当前日期时间像localtime()gettimeofday()等从time.h如何获得正确的时间在Linux中

假设用户修改Linux中的日期和时间设置更改日期到以前的某个日期,当我调用上述功能时,我会得到这些更改。

我仍然想获得当前时间,即今天的时间,而不管任何用户更改系统日期&时间设置。

有什么办法可以达到同样的效果吗?

+2

你不能,系统时间是系统时间,如果它改变,那么它改变。另外,如何确保_which_时间是正确的,然后是更新之前或之后的时间? – 2013-03-27 11:32:22

+0

然后而不是从您的系统读取从某个在线服务器读取。 – 2013-03-27 11:32:49

+0

一些Linux系统使他们的系统时间和日期作为标准服务被称为daytime.servinfo = getservbyname(“daytime”,“tcp”);'从像谷歌。如果你需要,我可以为你写一个简单的tcp客户端。 – 2013-03-27 11:37:13

回答

8

就你的电脑而言,系统时间是当前时间的

如果您不能相信您提供准确时间的系统,您可能需要考虑将NTPclient嵌入到您的程序中。

2

如果具有适当权限的用户更改系统时间,则系统会相信新值。

因此,让别人看到正确时间的唯一方法就是走出系统。例如,您可以通过NTP协议连接到时间服务器。

对于便宜而愉快的解决方案,您可以抓取一个网页,如http://www.whattimeisit.com/。 (最好)下载延迟是不准确的,这是NTP客户巧妙处理的问题之一。

如果你想要的不是“正确”的时间,只是在你使用它的时候没有跳过的时间,那么你可以看看clock_gettime,特别是CLOCK_MONOTONIC

0

如果它不同步到系统时间,你可以看看读取硬件时钟,看看hwclock man page

该页面上的注释部分有关于如何检查同步的一些信息。

相关问题