积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
获得进程的CPU占用率
error997 (error997)    2014-11-20 21:09:50      目标    课题
切换到: 纯代码  
   
#include <stdio.h>; 
#include <stdlib.h>; 
#include <unistd.h>; 
struct occupy 
{ 

    char name[20]; 
    unsigned int user; 
    unsigned int nice; 
    unsigned int system; 
    unsigned int idle; 
切换到: 纯代码  
   
}; 
float g_cpu_used; 
int cpu_num; 
void cal_occupy(struct occupy *, struct occupy *); 
void get_occupy(struct occupy *); 
int main() 
{ 
struct occupy ocpu[10]; 
struct occupy ncpu[10]; 
int i;
   cpu_num = sysconf(_SC_NPROCESSORS_ONLN); 
for(;;) 
{ 

  sleep(1); 
  get_occupy(ocpu); 
  sleep(1); 
  get_occupy(ncpu); 
  for (i=0; i<cpu_num; i++) 
  { 
      cal_occupy(&ocpu[I], &ncpu[I]); 
      printf("%f /n", g_cpu_used); 
  } 
切换到: 纯代码  
   
} 
}

   void 
切换到: 纯代码  
   
cal_occupy (struct occupy *o, struct occupy *n) 
{ 

  double od, nd; 
  double id, sd; 
  double scale; 
  od = (double) (o->;user + o->;nice + o->;system + 
        o->;idle); 
                                                 
  nd = (double) (n->;user + n->;nice + n->;system + 
        n->;idle); 
  scale = 100.0 / (float)(nd-od); 
  id = (double) (n->;user - o->;user); 
  sd = (double) (n->;system - o->;system); 
  g_cpu_used = ((sd+id)*100.0)/(nd-od); 
切换到: 纯代码  
   
}

   void 
切换到: 纯代码  
   
get_occupy (struct occupy *o) 
{ 

  FILE *fd; 
  int n; 
  char buff[1024]; 
                                                 
  fd = fopen ("/proc/stat", "r"); 
  fgets (buff, sizeof(buff), fd); 
  for(n=0;n<cpu_num;n++) 
  { 
  fgets (buff, sizeof(buff),fd); 
  sscanf (buff, "%s %u %u %u %u", &o[n].name, &o[n].user, &o[n].nice, 
        &o[n].system, &o[n].idle); 
    fprintf (stderr, "%s %u %u %u %u/n", o[n].name, o[n].user, o[n].nice, 
        o[n].system, o[n].idle); 
  } 
  fclose(fd); 
切换到: 纯代码  
   
}


转自 http://blog.csdn.net/y___y/article/details/1199089
(+0)技能Get

建议楼主:搜索关键字 |参考其他资源 |回复 |追问
  error997(error997):   个人中心    课题    目标    代码积累