Linux C 获取系统及进程内存状态

一、系统内存

Linux 提供了诸多的方式来获取系统内存状态。在 shell 下,我们可以通过 free 或者 top 等命令来获取。但是在 C/C++ 程序中又该如何获取呢?

这就不得不提到 Linux 提供的 proc 虚拟文件系统了,它提供了一个在 linux 内核空间和用户间之间进行通信的窗口。通过这个窗口,内核可以告诉我们很多系统信息。其中涉及到系统内存的,主要是 /proc/meminfo 文件:

该文件告诉我们关于系统内存的全方位的信息。于是通过读取并解析该文件,就可以到达获取内存状态的目的:

如果我们只是想获取一些常见的内存状态,比如 RAM Free,不需要知道太多细节,那么使用 GNU C 提供 sysinfo 函数是一个不错的方案。

头文件 <sys/sysinfo.h> 中声明了 sysinfo 函数,并定义了 sysinfo 结构体:

通过 sysinfo 函数,我们可以获取上述系统状态:

二、进程内存

进程的内存状态就相对比较复杂了,后续待补充。。。