+ -
当前位置:首页 → 问答吧 → 已经获取到进程的pid了,怎么才能获取这个进程所占内存大小呢?

已经获取到进程的pid了,怎么才能获取这个进程所占内存大小呢?

时间:2011-12-06

来源:互联网

我想通过系统调用获取特定进程占有的内存量,还有CPU占有率. 

#include <sys/types.h> 
#include <sys/time.h> 
#include <sys/resource.h> 
  
#define RUSAGE_SELF 0 
#define RUSAGE_CHILDREN -1 
   
int getrusage(int who, struct rusage *rusage); 

函数返回后,在rusage所指结构中有一个成员long ru_ixrss; /* integral shared memory size */(这是man page 中的注释) 

我把整个结构也给出来: 
struct rusage { 
  struct timeval ru_utime; /* user time used */ 
  struct timeval ru_stime; /* system time used */ 
  long ru_maxrss; /* max resident set size */ 
  long ru_ixrss; /* integral shared memory size */ 
  long ru_idrss; /* integral unshared data */ 
  long ru_isrss; /* integral unshared stack */ 
  long ru_minflt; /* page reclaims */ 
  long ru_majflt; /* page faults */ 
  long ru_nswap; /* swaps */ 
  long ru_inblock; /* block input operations */ 
  long ru_oublock; /* block output operations */ 
  long ru_msgsnd; /* messages sent */ 
  long ru_msgrcv; /* messages received */ 
  long ru_nsignals; /* signals received */ 
  long ru_nvcsw; /* voluntary context switches */ 
  long ru_nivcsw; /* involuntary " */ 
  }; 

这个数据结构里面的数据好像都不正确啊。

有其他方法么?

作者: bluefish625   发布时间: 2011-12-06

我们一般是从/proc文件系统取值

作者: axengine   发布时间: 2011-12-06