在Linux下的正常运行时间在C

我如何检索Linux下使用C的正常运行时间? (不使用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提供这种信息的唯一地方,这也只是作为一个扩展。