在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
等)。