获取linux可用内存
打开/proc/meminfo文件,然后读取每一行。
当找到包含"MemAvailable"的行时,获取该行后面的值,
并将其转换为长整型数表示的可用内存大小。
最后,我们打印出这个值。
$ cat /proc/meminfo |grep MemAvailable
MemAvailable: 14804156 kB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int available_memory_M(){
FILE *fp;
int avail_mem = -1;
char buffer[1024];
fp = fopen("/proc/meminfo", "r");
if (fp == NULL) {
printf("Cannot open /proc/meminfo\n");
return 1;
}
while (fgets(buffer, sizeof(buffer), fp)) {
if (strstr(buffer, "MemAvailable")) {
char *token = strchr(buffer, ':');
if (token != NULL) {
token++;
long available_memory = atoll(token);
avail_mem = available_memory/1024;
}
break;
}
}
fclose(fp);
return avail_mem;
}
int main() {
int avail_mem = available_memory_M();
printf("Available memory: %ldM\n", avail_mem);
return 0;
}
$ gcc c.c
$ ./a.out
Available memory: 14449M
参考文章