在 Linux 中获取毫秒时间:clock() 的替代方法
在 Linux 中寻求超出秒范围的精度,我们遇到了限制的clock(),它只近似于最接近的秒。虽然像 Qt 这样的第三方库提供了使用 QTime 类的解决方案,但为了寻求更基础的方法,我们探索了标准 C 工具的领域。
要实现毫秒精度,请考虑使用 gettimeofday() 函数
考虑以下代码片段:
#include <sys/time.h> #include <stdio.h> #include <unistd.h> int main() { struct timeval start, end; long mtime, seconds, useconds; gettimeofday(&start, NULL); usleep(2000); gettimeofday(&end, NULL); seconds = end.tv_sec - start.tv_sec; useconds = end.tv_usec - start.tv_usec; mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5; printf("Elapsed time: %ld milliseconds\n", mtime); return 0; }
在此示例中,我们利用 gettimeofday() 来捕获使用 usleep() 延迟 2 毫秒之前和之后的当前时间。通过从最终时间减去初始时间,我们获得以秒和微秒为单位的经过时间。为了将其转换为毫秒,我们将秒乘以 1000,将微秒乘以 1000.0,然后将它们相加,通过 0.5 的调整确保小数精度。
此方法为在 C 中获取毫秒提供了精确且标准的解决方案Linux,消除对外部库的依赖,同时保持跨平台的兼容性。
以上是如何在没有外部库的情况下在 Linux 中获得毫秒级的时间精度?的详细内容。更多信息请关注PHP中文网其他相关文章!