Linux中的epoch时间戳(也称为Unix时间戳)是指从1970年1月1日00:00:00 UTC(协调世界时)开始经过的秒数
然而,在某些场景下,我们可能需要更高的时间精度。例如,当我们需要测量非常短的时间间隔或者处理高速事件时,以秒为单位的精度可能不够。在这种情况下,我们可以使用以下方法来提高时间戳的精度:
在Linux系统中,你可以使用gettimeofday()
函数获取微秒级别的时间戳,或者使用clock_gettime()
函数获取纳秒级别的时间戳。这些函数分别属于<sys/time.h>
和<time.h>
头文件。
例如,使用gettimeofday()
函数获取微秒级别的时间戳:
#include<stdio.h>
#include <sys/time.h>
int main() {
struct timeval tv;
gettimeofday(&tv, NULL);
printf("Seconds: %ld, Microseconds: %ld\n", tv.tv_sec, tv.tv_usec);
return 0;
}
使用clock_gettime()
函数获取纳秒级别的时间戳:
#include<stdio.h>
#include <time.h>
int main() {
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
printf("Seconds: %ld, Nanoseconds: %ld\n", ts.tv_sec, ts.tv_nsec);
return 0;
}
请注意,不同的系统和编译器可能会有不同的实现和精度限制。在使用这些函数时,请确保查阅相关文档以了解其特性和限制。