time() 的结果在 sleep() 之后未更新

Result of time() not updated after sleep()

我正在尝试暂停我的程序 1 秒,然后检查系统时间(我在 Linux)

这是我的测试程序:

#include <stdio.h>
#include <unistd.h>
#include <time.h>

int main() {

    time_t now = time(NULL);
    struct tm *time_now = localtime(&now);
    printf("now: %d-%d\n", time_now->tm_min, time_now->tm_sec);

    int i = 0;
    for (; i < 5; i++) {
        sleep(1);
    }
    // This printf result is not as expected
    printf("now: %d-%d\n", time_now->tm_min, time_now->tm_sec);

    return 0;
}

预期的结果是第二个 printf 将打印 +5 秒。相反,它打印与第一个 printf.

相同的 time/seconds

我发现(也许)这里发布了同样的问题,但它似乎不起作用: .

抱歉我的英语不好,谢谢你的时间。

代码正在打印原始 *time_now 值 - 正如预期的那样。

只需再次读取时间即可使用新值。

time_t now = time(NULL);
struct tm *time_now = localtime(&now);
printf("now: %d-%d\n", time_now->tm_min, time_now->tm_sec);

int i = 0;
for (; i < 5; i++) {
    sleep(1);
}

// Add
time_t now = time(NULL);
struct tm *time_now = localtime(&now);

printf("now: %d-%d\n", time_now->tm_min, time_now->tm_sec);