timespec.tv_sec始终返回 0

timespec.tv_sec always returns 0

本文关键字:返回 sec tv timespec      更新时间:2023-10-16

我只是在学习如何使用clock_getres(网络上几乎没有好的文档)。 我的代码如下所示:

timespec now;
clock_getres(CLOCK_REALTIME,&now);
std::cout<<statut_cast<int>(now.tv_sec)<<","<<static_cast<int>(now.tv_nsec)<<std::endl;

无论我何时运行此代码,输出始终为 0,1谁能解释为什么这不起作用?

使用 clock_gettime 返回当前时间,而不是 clock_getres ,后者返回时钟的分辨率。

http://pubs.opengroup.org/onlinepubs/009604599/functions/clock_getres.html:

clock_getres()函数应返回任何时钟的分辨率

clock_gettime()函数应返回指定时钟的当前值tpclock_id

这是

正确的行为 - 输出0,1,因为您尝试获得分辨率的时钟具有纳秒分辨率。因此now.tv_nsec=1now.tv_sec=0.如果它没有纳秒分辨率,则输出将为 0,0