温馨提示×

linux epoch时间戳的原子操作

小樊
82
2024-08-27 00:11:02
栏目: 智能运维

在Linux系统中,可以使用clock_gettime函数获取当前的Unix时间戳(即从1970年1月1日00:00:00 UTC到现在的秒数)

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

int main() {
    struct timespec ts;
    clock_gettime(CLOCK_REALTIME, &ts);
    printf("Seconds: %ld\n", ts.tv_sec);
    printf("Nanoseconds: %ld\n", ts.tv_nsec);
    return 0;
}

这个示例程序将打印当前的Unix时间戳(秒)和纳秒。请注意,clock_gettime函数返回的是一个struct timespec结构体,其中包含两个字段:tv_sec表示秒数,tv_nsec表示纳秒数。

如果你想要获取自1970年1月1日00:00:00 UTC以来的总纳秒数,可以将秒数和纳秒数相加:

long long total_nanoseconds = (long long)ts.tv_sec * 1000000000 + ts.tv_nsec;
printf("Total nanoseconds: %lld\n", total_nanoseconds);

这样,你就可以得到一个原子操作的Linux epoch时间戳。

0