运行过程不遵循系统时间

时间:2014-02-09 15:41:28

标签: c linux time timezone

考虑以下程序,除了每分钟打印一次外,什么都不做。 当我将/ etc / localtime链接更改为其他时区时,我希望它根据新时区打印时间,但它会继续使用启动时生效的时区。

如果时区在运行时被更改,我如何让程序使用正确的时间?

BTW,系统是CentOS 5.8

#include <sys/time.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#define MAX_STIME_LEN 32
int
main()
{
    while(1){
        struct timeval timev;
        gettimeofday(&timev,0);
        struct tm now_tm;
        time_t now = timev.tv_sec;
        char saved_time[MAX_STIME_LEN];
        strftime(saved_time, sizeof(saved_time), "%b %e %T", localtime_r (&now, &now_tm));
        printf("%s\n",saved_time);
        sleep(15);
    }
}

请注意,使用localtime_r和strftime而不是使用ons-stop调用是必要的。这只是一个例子。

1 个答案:

答案 0 :(得分:0)

好吧,我在这里找到了答案:stackoverflow.com/questions/19170721 / ...,它缺少的是我必须取消设置环境变量TZ(即使它只是指向/ etc / localtime)

相关问题