如何检索Linux中的当前处理器时间?

我在embedded式设备中使用C语言和Linux作为我的编程平台。

我的问题是,如何正确检索当前的处理器时间(滴答)。 我在time.h中使用clock()函数,似乎我得到不一致的值。

谢谢。

clock()函数用于度量进程消耗的CPU时间。 当您的进程正在休眠或被阻止时,它不会增加。

如果您想要连续前进的高分辨率时钟,请使用clock_gettime(CLOCK_MONOTONIC, ..)

具体来说,我不清楚你在问什么。 如果你想要另一种方法来获得你的进程使用的时间,我经常使用getitimer()/ setitimer()和ITIMER_PROF,而不是ITIMER_REAL。 然而,我觉得这可能有点古怪。

您可能对LWN的文章“TSC的麻烦”以及所附的评论感兴趣。 尽管gettimeofdayclock_gettime似乎是正确的事情,但还有很多需要考虑的事情:性能可能会有所不同,多线程或多进程程序中不同CPU之间可能存在一致性问题,例如NTP可能会改变时钟值( CLOCK_MONOTONIC将不受NTP的影响,但其他可能)。

要小心,并确保你阅读任何你追求的,以确保它符合你的要求。 如果你幸运的话,你就是在一个固定的硬件和图书馆平台上,或者你可以承受一些不准确的或不精确的。