获取设置时间系统调用

名字 用处
time_t time(time_t *t) 获取系统时间,获取的为秒数
int stime(time_t *t) 设置系统时间,设置的为秒数
int gettimeofday(struct timeval *tv,struct timezone *tz) 设置系统时间,可获取秒数与微秒数
int settimeofday(struct timeval *tv,struct timezone *tz) 设置系统时间,可设置秒数与微秒数

以下是struct timeval的说明

在debian linux的man页中对gettimeofday函数的说明中,有这样一个说明:

DESCRIPTION
    The functions gettimeofday and settimeofday can get and set the time as
    well as a timezone. The tv argument is a timeval struct, as specified
    in time.h>:

    struct timeval {
          time_t       tv_sec;     /* seconds */
          suseconds_t   tv_usec; /* microseconds */
    };

其中对tv_usec的说明为时间的毫秒部分。 而在实际中,该函数以及Linux内核返回的timeval
类型的时间值,tv_usec代表的是微秒精度(10的-6次方秒)。

在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。

你可能感兴趣的:(Linux系统调用)