可靠地找到同一台机器上两个时钟之间的偏移量

Reliably find offset between two clocks on the same machine

clock_gettime(2) 的 Linux 手册页很好地解释了 CLOCK_REALTIMECLOCK_MONOTONIC 之间的含义差异。在任何给定时间,这两个时钟都会偏移一些不同的偏移量。我想跟踪这个偏移量。一个简单的近似值是

struct timespec rtime, mtime;
clock_gettime(CLOCK_REALTIME, &rtime);   
clock_gettime(CLOCK_MONOTONIC, &mtime);
// subtract the timespecs here.

但是两次调用之间存在不可预测的延迟。内核能否在单个 "atomic" 操作中给我可靠的偏移量估计?

顺便说一句:我认为 Starting point for CLOCK_MONOTONIC 中的 OP 想要相同的信息。但是那里的回答者似乎在回答不同的问题,所以我想我会用自己的话来问。

adjtimex 将 return 有关系统时钟相对于之前的 adjtime 调用如何变化的状态的信息。这可能不完全符合您的要求,但它可能会为您提供足够或等效的信息来满足您的任何需求。