我在窥探各种内核头文件时,偶然发现了<linux/kernel.h>。它的内部是一个叫做sysinfo的结构。
我试着开箱即用,可以这么说,结构中的所有值都返回0。我猜我需要使用上面称为do_sysinfo(struct sysinfo *info)的poplating函数。
问题是我找不到任何关于如何使用它的信息。我尝试了开箱即用的函数,但它失败了,因为它无法链接。有没有人知道如何使用它或者为什么它失败了?我是这方面的新手。想要任何链接到好的指南/信息,如果你有他们,那就太好了。
发布于 2012-03-06 03:50:11
我猜您尝试从用户空间调用该函数。这是不可能,因为标头只供内核使用,除了“共享”的结构sysinfo。
您可能希望通过包含sys/sysinfo.h来使用系统调用int sysinfo(struct sysinfo *info),以便填充struct sysinfo。
发布于 2012-03-06 03:53:53
do_sysinfo是内核端实现;它不能从用户端访问。不过,sysinfo系统调用是可访问的;它填充了结构:
#include <sys/sysinfo.h>
...
struct sysinfo info;
sysinfo(&info);请注意,通过解析/proc中的文件(例如,/proc/uptime、/proc/cpuinfo、/proc/meminfo)可以获得更多的信息。
https://stackoverflow.com/questions/9572680
复制相似问题