簡體   English   中英

在Linux下的Linux正常運行時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM