/proc/PID/statm을 읽어서 자기자신의 메모량을 알고 싶은데요
/proc/PID/statm을 읽어서 자기자신의 메모량을 알고 싶은데요
구체적으로 그거의 단위를 알고 싶습니다
********************************
/proc/PID/statm의 내용
The total process size
The size of the process resident in physical memory
The memory shared with other processes—that is, memory mapped both by this process and at least one other (such as shared libraries or untouched copyon-write pages)
The text size of the process—that is, the size of loaded executable code
The size of shared libraries mapped into this process
The memory used by this process for its stack
The number of dirty pages—that is, pages of memory that have been modified by the program
*********************************
그래서 첫번째 값만 출력하는 프로그램을 작성했는데요
그게 단순 byte인지 아님 atoi로 변환해야되는지 알려주세요
단위를 모르겠습니다
==============제가 짠 소스입니다=======================================
#include
#include
#include
#include
int main(int argc,char **argv){
FILE *meminfo;
int mem;
char item[100],path[20],*point;
pid_t pid;
pid=getpid();
printf("getpid():%d\n",pid);
sprintf(path,"/proc/%d/statm",pid);
printf("path:%s\n",path);
meminfo=fopen(path,"r");
if(meminfo == NULL){
printf("file is empty!!!\n");
exit(1);
}
fscanf(meminfo,"%s",item);
point=strtok(item," ");
printf("ID:%d MemSize:%s\n",pid,point);
fclose(meminfo);
return 0;
}
man proc 해보시면 statm
man proc 해보시면 statm 이외에도 stat이라는 항목이 있습니다.
거기서 23번째와 24번째는 각각 프로그램의 virtual memory size(Byte단위),
residence set size(Page개수)이지요.
제가 주로 쓰는 방법은
입니다.. ^^;
님은
님은 인터넷의 진리입니다.
덤으로,
덤으로, 자기자신에게 접근하고자 할 땐
/proc/self/
로 가시면 됩니다.
댓글 달기