본문 바로가기

Linux

print Memory info function

// I used this in AGX Xavier

 

#define MEMINFO "/proc/meminfo"

void printMem()
{
    char cmd[1024];
    int nMemTot =0;
    int nMemAva =0;

//  sprintf(cmd, "/proc/%d/status", getpid());
    sprintf(cmd, "/proc/meminfo");
    FILE* fp = fopen(MEMINFO, "r");
    if(fp == NULL) return;

    while(fgets(cmd, 1024, fp) != NULL) {
        if(strstr(cmd, "MemTotal"))  {
            char t[32];
            char size[32];
            sscanf(cmd, "%s%s", t, size);
            nMemTot = atoi(size);
        }
        else if(strstr(cmd, "MemAvailable")) {
            char t[32];
            char size[32];
            sscanf(cmd, "%s%s", t, size);
            nMemAva = atoi(size);
            break;
        }
    }
    fclose(fp);
    printf("+ nMemTot: %dkB, nMemAva: %dkB\n",nMemTot, nMemAva);
    printf("+ nMemSub: %dkB (=%dMB)\n",nMemTot-nMemAva,(nMemTot-nMemAva)/1024);
}