/proc/statの計算式を入れてみた。(ただしこれは計算式が間違っています)。後日修正予定。。。

[root@gochamaze C]# cat cpuinfo3.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct cpuinfo {

char name[50];
int count1;
int count2;
int count3;
int count4;
int count5;
int count6;
int count7;
int count8;
int count9;
} cpu;


int main(void)
{


FILE *rfp;
char *filename = "/proc/stat";
cpu s_cpu;
int all = 0;
double user = 0;
double sys = 0;
double idel = 0;


if *1 == NULL ){

fprintf(stderr,"Cannot open file");
}

fscanf(rfp,"%s %d %d %d %d %d %d %d %d %d",s_cpu.name,&s_cpu.count1,&s_cpu.count2,&s_cpu.count3,&s_cpu.count4,&s_cpu.count5,&s_cpu.count6,&s_cpu.count7,&s_cpu.count8,&s_cpu.count9);


all = s_cpu.count1 + s_cpu.count2 + s_cpu.count3 + s_cpu.count4;
user = (double)s_cpu.count1 / all;
sys = (double)s_cpu.count3 / all;
idel = (double)s_cpu.count4 / all;


printf("%s %d %d %d %d %d %d %d %d %d\n",s_cpu.name,s_cpu.count1,s_cpu.count2,s_cpu.count3,s_cpu.count4,s_cpu.count5,s_cpu.count6,s_cpu.count7,s_cpu.count8,s_cpu.count9);

printf ("all %d\n",all);
printf("user %lf \n",user);
printf("sys %lf \n",sys);
printf("idle %lf \n",idel);
}

*1:rfp = fopen(filename,"r"