inux下的内存CPU等资源的使用情况可通过解析伪文件系统/proc中的相关文件获得。htop就是通过解析该目录下的/proc/meminfo文件得到CPU的核数以及动态的使用情况。
通过cat /proc/meminfo命令可以查看该文件内容,非常直观,这里不多解释。
通过cat /proc/meminfo命令可以查看该文件内容,非常直观,这里不多解释。
可通过如下代码计算内存的使用率:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define startsWith(s, match) (strstr((s), (match)) == (s))
typedef struct MemInfo{
unsigned long long totalMem;
unsigned long long freeMem;
}MemInfo;
void memUse(){
FILE *fp = fopen("/proc/meminfo", "r");
if(fp == NULL)
exit(1);
MemInfo memi;
char buffer[128];
while(1){
while(fgets(buffer, 128, fp)){
if(startsWith(buffer, "MemTotal:"))
sscanf(buffer, "MemTotal: %llu kB", &memi.totalMem);
else if(startsWith(buffer, "MemFree:"))
sscanf(buffer, "MemFree: %llu kB", &memi.freeMem);
}
double userate = 1.0 * (memi.totalMem - memi.freeMem) / memi.totalMem * 100.0;
printf("