使用stime()和clock_settime()设置哪个时钟?正如我在人类中所读到的,两者都可以设置Linux时间。函数stime()设置“时间的概念”和clock_settime()与参数CLOCK_REALTIME可以设置“系统范围的RTC”。
1)这些时钟是什么?
2)有什么不同吗?
3)他们是否也设置了HW时钟?
4)如果没有:有没有人知道在不使用ioctl()的情况下用C / C ++设置hwclock的聪明方法?
[更新1]
更具体的第4点:std::system("/sbin/hwclock -w")
的C等价物是什么?
答案 0 :(得分:1)
很抱歉这个简短的回答我其实只想做评论,但它不会允许我这样做。
很好地帮助您解决问题4。 谷歌的一些快速研究让我前往 https://github.com/karelzak/util-linux/blob/master/sys-utils/hwclock.c 我没有研究这段代码超过2分钟,但快速搜索显示第468行:
static void set_hardware_clock(const time_t newtime, const bool universal, const bool testing)
编辑:
BTW查看维基百科http://en.wikipedia.org/wiki/Util-linux 和男人rtc
答案 1 :(得分:1)
我在MrSykkox的帮助下回答了我的问题。
我阅读http://linux.die.net/man/4/rtc并查看了给定的sys-utils源代码。两者都向我展示了很多不同的硬件时钟类型,如CMOS,RTC,KD等。在sys-utils代码的一部分中,我发现一些描述符是通过打开某些特定设备来设置的,例如/ dev / rtc,/ dev / rtc0,/ dev / misc / rtc,/ dev / port独有的读取。当然我找到了用于设置RTC的ioctl()内容。
<强>结论强>
答案 2 :(得分:-1)
clock_settime()
和stime()
是用于设置系统时间的setter函数,而不是独立于Machine的硬件时钟。
系统启动时,系统时间由硬件时钟设置。
Linux有一个处理硬件时钟hwclock
的命令。有关更多信息,请访问以下链接:http://linux.die.net/man/8/hwclock