gpt4 book ai didi

c++ - 在 Linux 中使用 C++ 设置系统日期和时间

转载 作者:IT王子 更新时间:2023-10-29 00:45:25 26 4
gpt4 key购买 nike

我正在开发一个将系统日期和时间更改为指定值的跨平台应用程序。我已经完成了 Windows 的部分。

如何在 Linux 中通过 C++ 程序设置系统日期和时间?我正在寻找类似于 SetSystemTime(SYSTEMTIME &x) 的函数。

据我所知,settimeofday() 对日期没有任何作用,我不确定函数 stime() 的用法。我希望 mktime() 与我的需求无关。

谁能帮帮我

最佳答案

你理解错了。 settimeofday(2)正在设置 Epoch time .这既是日期又是时间。阅读time(7)

因此,如果您从表示日期的字符串开始,请使用 strptime(3) 转换该字符串到一个 struct tm 然后用 mktime(3) 把它转换成 Unix 时间然后将其提供给 settimeofday(即 tv_sec 字段)。

但是,settimeofday 需要 root 权限,我相信您通常应该避免调用它(至少在通常情况下,Internet 连接的计算机上)。最好设置一些NTP Linux PC 上的客户端服务(例如,运行 ntpdchrony,更一般地阅读有关 keeping time 的系统管理章节 ...)。另见 adjtimex(2)

顺便说一句,突然更改 multi-tasking 上的系统时间系统 - 如 Linux 或 Windows - 是一个非常危险的操作(因为它会扰乱和干扰许多系统任务,具体取决于或使用时间)。这样做的理由很少(通常这是一个非常糟糕的主意)。如果您这样做,请在运行很少的程序和服务的情况下执行此操作(例如 single user mode Linux)。你不应该在普通的应用程序代码中这样做。

关于c++ - 在 Linux 中使用 C++ 设置系统日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28314543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com