加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:05:17 所属栏目:Linux 来源:网络整理
导读:我正在开发一个跨平台应用程序,它将系统日期和时间更改为指定值.我已经完成了 Windows的部分. 如何从Linux中的C程序设置系统日期和时间?我正在寻找类似于SetSystemTime(SYSTEMTIME x)的功能. 据我所知,settimeofday()对日期没有任何作用,我不确定函数stime(
我正在开发一个跨平台应用程序,它将系统日期和时间更改为指定值.我已经完成了 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权限,我相信你通常应该避免调用它.最好在Linux PC上设置一些NTP客户端服务(例如,运行ntpd或chrony,更常见的是阅读keeping time上的系统管理员章节……).另见adjtimex(2)

顺便说一句,在multi-tasking系统(如Linux或Windows)上突然改变系统时间是一项非常危险的操作(因为它会根据或使用时间来扰乱和干扰许多系统任务).这样做的理由很少(一般来说这是一个非常糟糕的主意).如果你这样做,那就用很少的程序做到这一点.运行的服务(例如single user mode Linux).你不应该在普通的应用程序代码中这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读