int getjiffies(int pid) {
static char stat[20];
static char buffer[1024];
+ char *p;
sprintf(stat,"/proc/%d/stat",pid);
FILE *f=fopen(stat,"r");
if (f==NULL) return -1;
- fgets(buffer,sizeof(buffer),f);
+ p = fgets(buffer,sizeof(buffer),f);
fclose(f);
- char *p=buffer;
- p=memchr(p+1,')',sizeof(buffer)-(p-buffer));
- int sp=12;
- while (sp--)
+ // char *p=buffer;
+ if (p)
+ {
+ p=memchr(p+1,')',sizeof(buffer)-(p-buffer));
+ int sp=12;
+ while (sp--)
p=memchr(p+1,' ',sizeof(buffer)-(p-buffer));
- //user mode jiffies
- int utime=atoi(p+1);
- p=memchr(p+1,' ',sizeof(buffer)-(p-buffer));
- //kernel mode jiffies
- int ktime=atoi(p+1);
- return utime+ktime;
+ //user mode jiffies
+ int utime=atoi(p+1);
+ p=memchr(p+1,' ',sizeof(buffer)-(p-buffer));
+ //kernel mode jiffies
+ int ktime=atoi(p+1);
+ return utime+ktime;
+ }
+ // could not read info
+ return -1;
}
//process instant photo
exit(1);
}
float limit=perclimit/100.0;
- if (limit<0 || limit >1) {
- fprintf(stderr,"Error: limit must be in the range 0-100\n");
+ if (limit <= 0.00) // || limit >1) {
+ {
+ fprintf(stderr,"Error: limit must be greater than 0\n");
print_usage (stderr, 1);
exit(1);
}