获取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

参考文章