linux下C语言的正常运行时间
如何使用C检索linux下的正常运行时间?(不使用popen和/或/proc)linux下C语言的正常运行时间,c,linux,C,Linux,如何使用C检索linux下的正常运行时间?(不使用popen和/或/proc) 谢谢通过top或通过正常运行时间,但我不知道任何系统调用,肯定有人会:) 正常运行时间应该很容易解析 刚刚偶然发现: #include <sys/sysinfo.h> struct sysinfo info; sysinfo(&info); printf("Uptime = %ld\n", info.uptime); #包括 结构sysinfo; sysinfo(&info); printf(
谢谢通过
top
或通过正常运行时间
,但我不知道任何系统调用,肯定有人会:)
正常运行时间
应该很容易解析
刚刚偶然发现:
#include <sys/sysinfo.h>
struct sysinfo info;
sysinfo(&info);
printf("Uptime = %ld\n", info.uptime);
#包括
结构sysinfo;
sysinfo(&info);
printf(“正常运行时间=%ld\n”,info.Uptime);
如果其存在并包含成员正常运行时间
,struct sysinfo
是首选方法,如下所示
另一种方法是从/proc/stat
中读取btime
,然后从当前时间中减去它btime
只是一个UNIX纪元,指示内核何时启动
这将为您提供启动后的秒数,然后您可以将其转换为年/月/天/小时/等。这样就不必在/proc/uptime
中处理字符串。如果btime
不存在,并且struct sysinfo
没有名为uptime
的成员,则必须解析/proc/uptime
对于现代内核,
sysinfo()
应该可以正常工作。大多数仍在运行2.4(或更早版本)的产品都是某种设备或其他嵌入式系统。要以更便携的方式获得系统启动时间,可以使用“who-b”。要在程序中使用它,您必须生成一个shell并解释其输出。不幸的是,这似乎是POSIX中唯一可以获得此类信息的地方,而且这也只是作为一个扩展。Horray for sysinfo():)NB:struct sysinfo
在2.4(早期)和2.4(晚期)和2.6之间有点“移动”。如果您的代码可能用于设备,则可以方便地运行生成检查以查看哪些成员可能不同。printf(“正常运行时间:%02ld:%02ld:%02ld\n”,info.Uptime/3600,info.Uptime%3600/60,info.Uptime%60);但是,编译内核时,
似乎不存在(vagrant&trusty64):/在这种情况下该怎么办?