在Linux系统中,时间戳是以秒为单位的,但是你可以通过一些方法来获得毫秒级的时间戳精度
clock_gettime()
函数:clock_gettime()
函数可以用于获取系统时间,其中CLOCK_REALTIME
表示系统实时时钟,CLOCK_MONOTONIC
表示单调时钟。要获得毫秒级的时间戳,你可以将CLOCK_REALTIME
或CLOCK_MONOTONIC
与CLOCK_MSECOND
时钟源相组合。
#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\n", milliseconds);
return 0;
}
gettimeofday()
函数:gettimeofday()
函数可以用于获取高精度的时间戳,其中第一个参数表示时间戳结构体,第二个参数表示微秒级的时间差。要获得毫秒级的时间戳,你可以将微秒除以1000。
#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\n", milliseconds);
return 0;
}
请注意,这些方法在大多数Linux系统上都能提供毫秒级的时间戳精度,但在某些特定场景下可能受到系统调度、内核版本等因素的影响。如果你需要更高精度的时间戳,可以考虑使用POSIX定时器
(如timerfd
)或Linux高性能计时器API
(如timerfd_create
、timerfd_settime
等)。