在Linux下的Linux正常运行时间

时间:2010-06-18 14:07:41

标签: c linux

如何使用C检索linux下的正常运行时间? (不使用popen和/或/ proc)

由于

3 个答案:

答案 0 :(得分:21)

通过topuptime,但我不知道任何系统调用,有人肯定会:)

uptime应该很容易解析。

偶然发现了这个:

#include <sys/sysinfo.h>

struct sysinfo info;
sysinfo(&info);
printf("Uptime = %ld\n", info.uptime);

答案 1 :(得分:2)

如果在那里并且包含成员uptime,则struct sysinfo是首选的方式,Jack explained

另一种方法是从btime中读取/proc/stat,然后从当前时间中删除它。 btime只是一个UNIX纪元,表明内核何时启动。

这为您提供自启动以来的秒数,然后您可以将其转换为年/月/日/小时/等。这样可以节省/proc/uptime中的字符串。如果不存在btimestruct sysinfo没有名为uptime的成员,则必须解析/proc/uptime

对于现代内核,sysinfo()应该可以正常工作。大多数仍在运行2.4(或更早)的东西都是某种类型的设备或其他嵌入式系统。

答案 2 :(得分:1)

为了以更便携的方式获得系统启动时间,将使用“who -b”。要在程序中使用它,您必须生成一个shell并解释其输出。不幸的是,这似乎是唯一可以在POSIX中获得此类信息的地方,这也只是作为扩展。