我需要编写一个C / C ++代码,以便从进程状态中获取以下信息:
struct timespec utime; //用户时间
struct timespec stime; //系统时间
size_t dsize; //数据大小
size_t shmsize; //共享内存大小(已创建)
size_t vshmsize; //共享内存大小(已使用)
目前我已经为Solaris实现了这个,但是如何在Red Hat中获取此信息,是否有任何API可以执行此操作?
在Solaris上,我可以读取结构的进程状态,如下所示:
static int readPStat(pid_t processid, pstatus_t *ret)
{
char pfile[256];
int stat=-1;
sprintf(pfile,"/proc/%d/status", processid);
stat =open(pfile,O_RDONLY))
read( stat, ret, sizeof(pstatus_t)) );
.......
}
int getProcessInfo ( )
{
pid_t processid;
pstatus_t procStat;
int dSize;
.......
readPStat(processid, &procStat)
.......
dSize = psinfo.pr_rssize;
}
我尝试过做一些研究,但未能找到关于如何在Red Hat中做到这一点的明确答案。