/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);
}