我正在将一个 C 项目从 Solaris 移植到 Linux 并重新编译它。在 logger.c 中,sys/time.h 的 gethrtime() 函数不能为 Linux 编译。如何将其移植到 Linux?在 Linux 中是否有替代品?
最佳答案
您正在寻找的功能是 clock_gettime
:
struct timespec t;
if (clock_gettime(CLOCK_MONOTONIC, &t) == -1) {
perror("clock_gettime for CLOCK_MONOTONIC failed");
} else {
printf("mono clock timestamp: %ld.%09ld\n", t.tv_sec, t.tv_nsec);
}
CLOCK_MONOTONIC
参数从未指定的起点获取时间。这与获取挂钟时间的 CLOCK_REALTIME
不同。在大多数实现中,分辨率将以纳秒为单位,但是您可以通过调用
clock_getres
找到确切的分辨率:struct timespec t;
if (clock_getres(CLOCK_MONOTONIC, &t) == -1) {
perror("clock_getres for CLOCK_MONOTONIC failed");
} else {
printf("mono clock resolution: %ld.%09ld\n", t.tv_sec, t.tv_nsec);
}
关于c - 如何将 C 中的 gethrtime() 从 Solaris 移植到 RHEL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49241839/