我正在用C编写一个小程序,我想用它将一些系统统计数据输出到我的HD44780 16x2字符显示器上。我将使用的系统是一个Debian ARM系统,虽然不相关,但显示在GPIO头上。(该系统是一个Raspberry Pi)。
作为第一次尝试(有点不那么雄心勃勃),我想从一些简单的东西开始,比如RAM和CPU的使用(我是C的新手)。
我知道,如果我发出外部命令调用,我需要fork()和execve() (或者某种让我返回结果的等价物),我想知道的是如何以我可以使用的干净格式获取我想要的信息。
我当然不需要打电话(例如);
free -h然后用awk或者类似的方法把我想要的东西砍下来?一定有更干净的方法吗?
这个问题应该被看作是一个一般性的问题,在C中获取系统信息的最佳实践是什么( RAM/CPU的使用只是一个初步的例子)。
发布于 2012-09-05 19:01:46
关于系统状态的信息超出了C语言规范的范围,所以您所做的任何事情都将特定于程序运行的系统。
既然您已经确定了一个目标环境(Linux)和一个提供您所追求的一些信息的程序(free(1)),您最好的选择是获取和检查该程序的源代码,了解它如何工作,并使用您在自己的程序中学到的内容。(这肯定比复制实用程序和分离输出要好得多。)
发布于 2012-09-06 09:24:42
如果您是在现代Linux系统上,您要查找的信息可以在根植于/proc/的伪文件系统中找到。每个进程都有一个/proc/[pid]子目录,其他子目录提供全局状态。例如,/proc/meminfo是free(1)的来源。
发布于 2012-09-06 12:02:24
有各种提供系统信息的库例程,试着查看一下sysinfo()调用。
https://softwareengineering.stackexchange.com/questions/163835
复制相似问题