我需要查找從c代碼中的linux機器上應用電源後的系統時間。 像'time()'和gettimeofday()這樣的函數返回自開始以來的時間,而不是從開啓後的時間。 自開機以來,我如何查找時鐘滴答的時間或數量?Linux自開機以來獲取系統時間
在此先感謝!
我需要查找從c代碼中的linux機器上應用電源後的系統時間。 像'time()'和gettimeofday()這樣的函數返回自開始以來的時間,而不是從開啓後的時間。 自開機以來,我如何查找時鐘滴答的時間或數量?Linux自開機以來獲取系統時間
在此先感謝!
如果你想知道C API,
這個問題的What API do I call to get the system uptime?
可能重複。如果你想知道通過外殼的正常運行時間,運行時間使用命令。
$uptime
參見:Wgat API do I call to get the System Time
請參閱SYSINFO()在
SYS/sysinfo.h
struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* swap space still available */
unsigned short procs; /* Number of current processes */
unsigned long totalhigh; /* Total high memory size */
unsigned long freehigh; /* Available high memory size */
unsigned int mem_unit; /* Memory unit size in bytes */
char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding for libc5 */
};
此信息通過/proc
文件系統API提供。具體而言,/proc/uptime
。在C中,將其作爲普通文件打開並從中讀取一個浮點數。這將是開機後的秒數。如果讀取另一個FP值,則系統花費總共閒置多少秒。你只對第一個數字感興趣。
實施例:
float uptime;
FILE* proc_uptime_file = fopen("/proc/uptime", "r");
fscanf(proc_uptime_file, "%f", &uptime);
該值是以秒,浮點型。
您可以將其轉換回時鐘滴答:
uptime * sysconfig(_SC_CLK_TCK);
我正要提出同樣的...... :) –
'uptime'把它交給你,但我不知道是否有一個API來訪問它,否則你會不得不稱其爲命令 – Cfreak
[我可以通過調用哪些API來獲得系統正常運行時間?](http://stackoverflow.com/questions/1540627/what-api-do-i-call-to-get-the-system-uptime) – Cfreak