Linux提供stime(2)调用来设置系统时间.然而,虽然这会更新系统的时间,但它并没有设置BIOS硬件时钟来匹配新的系统时间.
Linux系统通常将硬件时钟与系统时间在关机时间和周期性间隔进行同步.但是,如果在这些自动同步之一之前机器重新启动电源,则机器重新启动时间将不正确.
设置系统时间时,如何确保硬件时钟更新?
解决方法
查看rtc手册页的详细信息,但是如果您以root身份登录,则会这样:
- 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 */
- };
- struct rtc_time rt;
- /* set your values here */
- fd = open("/dev/rtc",O_RDONLY);
- ioctl(fd,RTC_SET_TIME,&rt);
- close(fd);