獲取Linux時間函數


Linux下clock_gettime函數詳解

要包含這頭文件<time.h>

且在編譯鏈接時需加上 -lrt ;因為在librt中實現了clock_gettime函數。

---

struct timespec ts;

clock_gettime(CLOCK_MONOTONIC,ts);

printf("%d %d",ts.tv_sec, ts.tv_nsec);打印出來的時間跟 cat /proc/uptime第一個參數一樣

/proc/uptime里面的兩個數字分別表示: 
the uptime of the system (seconds), and the amount of time spent inidle process (seconds).

把第一個數讀出來,那就是從系統啟動至今的時間,單位是秒

 

Middleware對POSIX提供的標准計時器API進行封裝,主要提供了兩種類型的時鍾的封裝。一種是CLOCK_REALTIME,另一種是CLOCK_MONOTONIC。對與man手冊的解釋是:
CLOCK_REALTIME: Systemwide realtime clock. 系統范圍內的實時時鍾。
CLOCK_MONOTONIC:Represents monotonic time. Cannot be set.表示單調時間,不能被設置的。

手冊中解釋的比較籠統。我個人的理解是:
CLOCK_REALTIME:這種類型的時鍾可以反映wall clocktime,用的是絕對時間,當系統的時鍾源被改變,或者系統管理員重置了系統時間之后,這種類型的時鍾可以
得到相應的調整,也就是說,系統時間影響這種類型的timer。
CLOCK_MONOTONIC:用的是相對時間,他的時間是通過jiffies值來計算的。該時鍾不受系統時鍾源的影響,只受jiffies值的影響。

建議使用:
CLOCK_MONOTONIC這種時鍾更加穩定,不受系統時鍾的影響。如果想反映wall clocktime,就使用CLOCK_REALTIME。

 

clock_gettime比gettimeofday更加精確

 

clock_gettime( )提供了納秒的精確度,給程序計時可是不錯哦; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM