gpt4 book ai didi

c - 在 C 中,如何在 Linux 中获得完整的时间戳(甚至在几秒钟之后)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:20 25 4
gpt4 key购买 nike

我得到一个字节流,每 2000 个字节后,我想创建一个新文件并存储它。因为它是连续的字节流,所以我不能使用计数器等。所以,我想使用系统时间戳来唯一标识文件,如 filename

我找到了一些线程来获取系统时间戳,但我只能看到几秒钟。有没有其他方法,我们可以在 C、linux 操作系统中获得完整的时间戳(timestmap like: 2011-11-08 18:02:08.954092000)?在所有线程中,我只看到像 2011-11-08 18:02:08

这样的秒数

最佳答案

Linux 有 clock_gettime()具有纳秒分辨率。

示例代码

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

int main(void) {
unsigned mult = 0;
struct timespec t0, t1;
clock_gettime(CLOCK_REALTIME, &t0);
for (unsigned k = 0; k < 10000000; k++) mult *= k; // no overflow!
clock_gettime(CLOCK_REALTIME, &t1);

printf("%lld.%09ld --> %lld.%09ld\n",
(long long)t0.tv_sec, t0.tv_nsec,
(long long)t1.tv_sec, t1.tv_nsec);
return 0;
}

在我的机器上(FreeBSD/Unix 但应该与任何 Linux 相同),上面的代码打印

1438167485.022409606 --> 1438167485.055779608

关于c - 在 C 中,如何在 Linux 中获得完整的时间戳(甚至在几秒钟之后)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31697393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com