How Do You Programmatically Set the Hardware Clock on Linux? How Do You Programmatically Set the Hardware Clock on Linux? linux linux

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.


I would start by reading the source code of hwclock.