Linux提供了stime(2)调用来设置系统时间.但是,虽然这会更新系统的时间,但它不会将BIOS硬件时钟设置为与新系统时间相匹配.
Linux系统通常将硬件时钟与关机时的系统时间以及定期间隔同步.但是,如果机器在其中一个自动同步之前重新启动电源,则机器重新启动时的时间将不正确.
在设置系统时间时,如何确保硬件时钟得到更新?
查看rtc手册页了解详细信息,但如果您以root身份登录,则执行以下操作:
#include#include 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);
在调用stime()之后,执行以下操作:
system("/sbin/hwclock --systohc");
有关更多信息,请参见hwclock(8)手册页.