如何以微秒(或更好,纳秒)的精度打印当前系统时间?我需要这个时间在所有系统处理器之间保持一致。如果这不可能,我希望它在所有处理器内核之间保持一致。
我已经尝试clock_gettime(CLOCK_REALTIME
但我怀疑它至少在不同的处理器上运行时会产生不同的结果。
答案 0 :(得分:2)
听起来你真正想要的是CLOCK_MONOTONIC_RAW
(或只是CLOCK_MONOTONIC
)。原始时钟测量从固定点开始的时间并查询纯硬件时钟。在Linux上,这个固定的时间点是启动时间。系统时间的变化不会影响此时钟(夏季/冬季等)
您可以通过拨打clock_getres(clockid_t clk_id, struct timespec *res);
gettime
和getres
都采用包含两个整数的timespec结构:秒和纳秒。所以软件就在那里,你只需要一个能够提供纳秒分辨率的(硬件)时钟。
这两个函数的手册页:
http://man7.org/linux/man-pages/man2/clock_gettime.2.html& http://linux.die.net/man/3/clock_gettime
如果您可以访问Michael Kerrisk所着的“Linux Programming Interface”一书,请查看第23章第5段(POSIX时钟)。谈到基本的Linux编程,本书给了我更多答案,甚至比StackOverflow还要多!