使用c库函数设置系统时间

时间:2010-05-26 19:37:29

标签: c

我可以使用struct tm和time(),localtime(),asctime()来获取系统时间。但我需要帮助我如何使用c程序设置系统时间。

1 个答案:

答案 0 :(得分:4)

如果您不想执行shell命令,您可以(如您所述)使用settimeofday,我将从阅读MAN page开始,或者查找一些示例

这是一个例子:

#include <sys/time.h>
#include <stdio.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    struct timeval now;
    int rc;

    now.tv_sec=866208142;
    now.tv_usec=290944;

    rc=settimeofday(&now, NULL);
    if(rc==0) {
        printf("settimeofday() successful.\n");
    }
    else {
        printf("settimeofday() failed, "
        "errno = %d\n",errno);
        return -1;
    }

    return 0;
}

IBMs documentation无耻地翻录,struct timeval结构从1月1日起保持秒数(作为long)加上微秒数(作为long) 1970年,00:00:00 UTC(Unix大纪元时间)。因此,您需要计算这些数字才能设置时间。你可以使用这些helper functions来更好地处理timeval结构。