【发布时间】:2016-07-27 17:11:08
【问题描述】:
我正在探索 C 中的高精度时间函数。我遇到了 clock_gettime 并在这里阅读了它:
http://man7.org/linux/man-pages/man2/clock_gettime.2.html
我注意到它说:
Link with -lrt (only for glibc versions before 2.17).
我想知道为什么我可以使用精度较低的时间函数而不需要向我的 gcc 编译行添加任何内容?有没有办法让我以不同的方式使用高精度代码,这样我就不需要在我的编译行上添加任何东西?
我知道我的系统使用的是旧的....旧版本的 glibc,这就是我必须这样做的原因,但我是为了那些无法使用的人(比如我自己)而请求更新 glibc。
代码正在进行中:
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv)
{
int result;
struct timespec tp;
clockid_t clk_id;
// clk_id = CLOCK_REALTIME;
clk_id = CLOCK_MONOTONIC;
// clk_id = CLOCK_BOOTTIME;
// clk_id = CLOCK_PROCESS_CPUTIME_ID;
// int clock_gettime(clockid_t clk_id, struct timespec *tp);
result = clock_gettime(clk_id, &tp);
printf("result: %i\n", result);
printf("tp.tv_sec: %lld\n", tp.tv_sec);
printf("tp.tv_nsec: %ld\n", tp.tv_nsec);
result = clock_getres(clk_id, &tp);
printf("result: %i\n", result);
printf("tp.tv_sec: %lld\n", tp.tv_sec);
printf("tp.tv_nsec: %ld\n", tp.tv_nsec);
}
【问题讨论】:
-
难道你不应该发布你的 glibc 版本吗?
-
由于工作相关的原因,我实际上不确定我是否可以,但我知道它比 2.17 旧。这些信息会影响代码的重写方式吗?