← Back to team overview

sslug-teknik team mailing list archive

Re: Læse en process's CPU usage

 

Kim Nielsen wrote:
> 
oki .. så tager vi noget c kode:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>

void getvalue(char *file, int *cur, int *max) {
  char buf[20];
  FILE *fp = fopen(file, "r");
  if (!fp) return;
  char *t =  fgets(buf, sizeof(buf), fp);
  if (!t) return;

  char delim[] =" ";
  if (t) {
    char *tmp = strtok(t, delim);
    tmp = strtok(0, delim);
    if (tmp) *cur = atoi(tmp);
    tmp = strtok(0, delim);
    if (tmp) *max = atoi(tmp);
  }
  fclose(fp);
}

int main(int argc, char** argv) {

  int cur, max, deltacur=0, deltamax=0;
  time_t oldtid, tid = 0;

  while(1) {
    oldtid = tid;
    getvalue("/proc/6373/cpu", &cur, &max);
    tid = max;
    deltamax = tid-oldtid;
    if (deltamax > 80) {
      printf("Warning: den går amok!");
    }
    printf("Delta %d\n", deltamax);
    sleep(2);
  }
}

det er noget slam og lavet på kort tid men det virker .. :) så kan du
selv lave videre på det  ..

/Kim


References