리눅스에서 시스템 상태에 따른 프로그래밍을 할 경우 사용된다. 예전 리눅스에선 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 예제... 끝.
반응형
최근댓글