리눅스에서 시스템 상태에 따른 프로그래밍을 할 경우 사용된다. 예전 리눅스에선 meminfo.h를 이용했으나, 시스템 버전이 올라가면서 sysinfo.h로 변경 되었다.

     

    sysinfo 구조체는 아래와 같다. 

    struct sysinfo {
         long uptime;              /* 부팅 이후 지나간 초단위 시간*/
         unsigned long totalram;   /* 사용할 수 있는 총 메모리 크기*/
         unsigned long freeram;    /* 이용할 수 있는 메모리 크기*/
         unsigned long sharedram;  /* 공유 메모리의 양*/
         unsigned long bufferram;  /* 버퍼에 의해 사용된 메모리*/
         unsigned long totalswap;  /* 총 스왑 공간의 크기*/
         unsigned long freeswap;   /* 이용할 수 있는 스왑 공간*/
         unsigned short procs;     /* 현재 프로세스의 수*/
         char _f[22];              /* 구조체를 64 bytes로 채운다(pad)*/
    };
    

     

    1. 예제코드

    #include <stdio.h>
    #include <sys/sysinfo.h>
    
    int main(int argc, char** argv)
    {
        struct sysinfo info;
    
        sysinfo(&info);
    
        printf("Process Cnt  : %d\n", info.procs);
        printf("Total Memory : %ld\n", info.totalram);
        printf("Free  Memory : %ld\n", info.freeram);
        printf("Used  Memory : %ld\n", info.totalram-info.freeram);
        printf("Swap  Memory : %ld\n", info.totalswap);
        printf("Used  Buffer : %ld\n", info.bufferram);
    
        return 0;
    }

     

    2. 실행결과

      - 컴파일

    $ gcc -o sysinfo_ex sysinfo_ex.c

     

      - 실행결과

      실제 결과와 비교해보려면 리눅스의 top 명령을 이용하여 같이 확인해보면 된다. 메모리는 바이트 기준이므로, 1024단위로 나뉘면 KB -> MB -> GB 형태로 변경이 가능하다. 

     

     

    # sysinfo 예제... 끝.

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기