在Ubuntu系统中,时间戳的默认精度通常是毫秒级的。然而,通过使用特定的函数和硬件支持,可以获得更高精度的时间戳。
clock_gettime()
函数:#include <stdio.h>
#include <time.h>
int main() {
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
long milliseconds = ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
printf("Milliseconds since epoch: %ld
", milliseconds);
return 0;
}
gettimeofday()
函数:#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval tv;
gettimeofday(&tv, NULL);
long milliseconds = tv.tv_sec * 1000 + tv.tv_usec / 1000;
printf("Milliseconds since epoch: %ld
", milliseconds);
return 0;
}
请注意,这些方法在大多数Linux系统上都能提供毫秒级的时间戳精度,但在某些特定场景下可能受到系统调度、内核版本等因素的影响。如果你需要更高精度的时间戳,可以考虑使用 POSIX 定时器(如 timerfd
)或 Linux 高性能计时器 API(如 timerfd_create
、 timerfd_settime
等)。