[英]linux - print current time with microsecond precision on multi-processor system
如何以微秒(或更優的納秒)精度打印當前系統時間? 我需要這段時間在所有系統處理器之間保持一致。 如果這不可能,那么我希望所有處理器內核之間保持一致。
我嘗試過clock_gettime(CLOCK_REALTIME
但我懷疑至少在不同處理器上運行時它會產生不同的結果。
在我看來,您真正想要的是CLOCK_MONOTONIC_RAW
(或者只是CLOCK_MONOTONIC
)。 原始時鍾測量從固定點開始的時間,並查詢基於硬件的純時鍾。 在Linux上,此固定時間點是啟動時間。 系統時間的更改不會影響此時鍾(夏季/冬季等)。
您可以通過調用clock_getres(clockid_t clk_id, struct timespec *res);
來檢查系統中時鍾的分辨率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編程接口”一書,請查看第23章第5段(POSIX時鍾)。 在基本的Linux編程方面,這本書給我的答案甚至超過StackOverflow!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.