我正在尝试将我的服务器时间与客户端时间同步,我得到了获取服务器时间的代码,如下所示。如果我在服务器中运行它,则在客户端登录时。我将时间发送给客户端,但是如何将“客户端”系统时间更改为我从服务器发送的时间。
我在 google 上搜索了 setenv 之类的东西,但我们如何在 Linux C++ 中实际更改时间?
使用下面的代码,我可以获得当前时间:
/* localtime example */
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "Current local time and date: %s", asctime (timeinfo) );
return 0;
}
最佳答案
Linux(或 Unix,或 Posix)系统从 unix epoch 开始测量时间.最低级别(与时间相关的 syscalls 和内核)真正不涉及时区。时区是图书馆的东西,通过 localtime(3)和 strftime(3)和其他功能。
另请阅读 time(7)手册页。
你真的想使用 NTP protocol 同步时间(在本地和远程机器上) (使用 ntpd
、chrony
、ntpdate
....),或者至少使用 rdate
(但最好使用 NTP ).
查询时间的系统调用是gettimeofday(2) , time(2) , clock_gettime(2)使用 CLOCK_REALTIME
您可能会使用 settimeofday(2)和 adjtimex(2)系统调用来设置时间。这通常需要 root 权限。
关于C++ Linux - 将时区更改为某个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033512/