Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux下C语言的正常运行时间_C_Linux - Fatal编程技术网

linux下C语言的正常运行时间

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(

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


谢谢

通过
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):/在这种情况下该怎么办?