How Do You Programmatically Set the Hardware Clock on Linux?
Check out the rtc man-page for details, but if you are logged in as root, something like this:
#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);
After calling stime(), do this:
system("/sbin/hwclock --systohc");
See the hwclock(8) man page for more information.