[英]Uptime under linux in C
如何使用C檢索linux下的正常運行時間? (不使用popen和/或/ proc)
謝謝
通過top
或通過uptime
,但我不知道任何系統調用,有人肯定會:)
uptime
應該很容易解析。
偶然發現了這個:
#include <sys/sysinfo.h>
struct sysinfo info;
sysinfo(&info);
printf("Uptime = %ld\n", info.uptime);
如果它在那里並且包含成員uptime
,那么struct sysinfo
是首選的方式,正如傑克解釋的那樣 。
另一種方法是讀取/proc/stat
btime
,然后從當前時間中減去它。 btime
只是一個UNIX紀元,表明內核何時啟動。
這可以為您提供自啟動以來的秒數,然后您可以將其轉換為年/月/日/小時/等。這樣可以節省處理/proc/uptime
字符串。 如果btime
不存在,並且struct sysinfo
沒有名為uptime
成員,則必須解析/proc/uptime
。
對於現代內核, sysinfo()
應該可以正常工作。 大多數仍在運行2.4(或更早)的東西是某種類型的設備或其他嵌入式系統。
要以更便攜的方式獲得系統啟動時間,可以使用“who -b”。 要在程序中使用它,您必須生成一個shell並解釋其輸出。 不幸的是,這似乎是POSIX中唯一可以獲得此類信息的地方,這也僅作為擴展。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.