一尘不染

如何在Linux上以编程方式设置硬件时钟?

linux

Linux提供了stime(2)调用来设置系统时间。但是,虽然这将更新系统时间,但不会将BIOS硬件时钟设置为与新系统时间匹配。

Linux系统通常会在关机时并定期将硬件时钟与系统时间同步。但是,如果在这些自动同步之一之前重启机器,则重新启动机器的时间将不正确。

设置系统时间时,如何确保更新硬件时钟?


阅读 241

收藏
2020-06-03

共1个答案

一尘不染

查看rtc手册页以获取详细信息,但是如果您以root用户身份登录,则如下所示:

#include <linux/rtc.h>
#include <sys/ioctl.h>


    struct       rtc_time {
        int         tm_sec;      
        int         tm_min;      
        int         tm_hour;     
        int         tm_mday;     
        int         tm_mon;      
        int         tm_year;     
        int         tm_wday; /* unused */
        int         tm_yday; /* unused */
        int         tm_isdst;/* unused */
    };

int fd;
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
2020-06-03