using namespace std;
#include "hprocessstat.h"
#include <fcntl.h>
ClassImp(HProcessStat)
HProcessStat::HProcessStat(const Char_t* name,const Char_t* title)
:TNamed(name,title)
{
}
HProcessStat::HProcessStat()
{
}
HProcessStat::~HProcessStat(){}
void HProcessStat::print()
{
printf("####### Process Stat #############\n");
printf("pid :%i\n",pid);
printf("name :%s\n",name);
printf("priority :%i\n",pri);
printf("nice :%i\n",nice);
printf("size :%ld\n",size);
printf("rss :%ld\n",rss);
switch (state)
{
case 1: printf("state : R\n"); break;
case 2: printf("state : S\n"); break;
case 3: printf("state : D\n"); break;
case 4: printf("state : Z\n"); break;
case 5: printf("state : T\n"); break;
case 6: printf("state : W\n"); break;
}
printf("time :%ld\n",time);
printf("##################################\n");
}
void HProcessStat::update()
{
Char_t buffer[4096];
Char_t tmp[3];
Int_t time1,time2;
time1 = time2 = 0;
{
Int_t fd, len;
sprintf(buffer, "/proc/%d/stat", pid);
fd = open(buffer,O_RDONLY);
len = read(fd, buffer, sizeof(buffer)-1);
close(fd);
buffer[len] = '\0';
}
sscanf(buffer,"%*d %s %s %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %d %d %*d %*d %d %d %*d %*d %lu %lu",
name,tmp,
&time1,&time2,&pri,&nice,&size,&rss);
time = time1 + time2;
switch (*tmp)
{
case 'R': state = 1; break;
case 'S': state = 2; break;
case 'D': state = 3; break;
case 'Z': state = 4; break;
case 'T': state = 5; break;
case 'W': state = 6; break;
}
}
Last change: Sat May 22 13:07:41 2010
Last generated: 2010-05-22 13:07
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.