资源描述:
《MFC中获取CUP内存磁盘使用情况》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、获取CPU,内存使用率,磁盘相关信息[cpp]viewplaincopyprint?1.[cpp]viewplaincopyprint?1.CPU信息[cpp]viewplaincopyprint?1.boolget_cpuoccupy(CPU_OCCUPY*cpust)//对无类型get函数含有一个形参结构体类弄的指针O2.{3.FILE*fd;4.charbuff[256];5.CPU_OCCUPY*cpu_occupy;6.cpu_occupy=cpust;7.8.if((fd=fopen("/proc/stat","r"))<=0
2、)9.returnfalse;10.memset(buff,0,256);11.fgets(buff,sizeof(buff),fd);12.13.sscanf(buff,"%s%u%u%u%u",cpu_occupy->name,&cpu_occupy->user,14.&cpu_occupy->nice,&cpu_occupy->system,&cpu_occupy->idle);15.16.fclose(fd);17.returntrue;18.}19.20.//获取CPU频率MHZ21.boolget_cpu_info(unsig
3、nedint*total)22.{23.FILE*fd;1.charbuff[256];2.charname[128],Hz[128],tmp[128];3.char*p;4.5.*total=0;6.if((fd=fopen("/proc/cpuinfo","r"))<=0)7.returnfalse;8.memset(buff,0,256);9.for(inti=0;i<7;i++)10.{11.fgets(buff,sizeof(buff),fd);12.}13.14.sscanf(buff,"%s%s%s%s",name,Hz,t
4、mp,tmp);15.p=strtok(tmp,".");16.*total=atoi(p);17.18.fclose(fd);19.returntrue;20.}计算CPU使用率[cpp]viewplaincopyprint?1.intcal_cpuoccupy(CPU_OCCUPY*o,CPU_OCCUPY*n)2.{3.unsignedlongoldtatal,newtotal;4.unsignedlongid,sd,nd;5.intcpu_use=0;6.7.oldtatal=(unsignedlong)(o->user+o->n
5、ice+o->system+o->idle);//第一次(用户+优先级+系统+空闲)的时间再赋给od8.newtotal=(unsignedlong)(n->user+n->nice+n->system+n->idle);//第二次(用户+优先级+系统+空闲)的时间再赋给od9.10.id=(unsignedlong)(n->user-o->user);//用户第一次和第二次的时间之差再赋给id11.nd=(unsignedlong)(n->nice-o->nice);1.sd=(unsignedlong)(n->system-o->sy
6、stem);//系统第一次和第二次的时间之差再赋给sd2.if((newtotal-oldtatal)!=0)3.cpu_use=(int)((sd+id+nd)*10000)/(newtotal-oldtatal);//((用户+系统)乖100)除(第一次和第二次的时间差)再赋给g_cpu_used4.else5.cpu_use=0;6.returncpu_use;7.}内存信息[cpp]viewplaincopyprint?1.boolget_memoccupy(MEM_OCCUPY*mem)//对无类型get函数含有一个形参结构体类
7、弄的指针O2.{3.FILE*fd;4.charbuff[256],tmp[20];5.MEM_OCCUPY*m;6.m=mem;7.8.if((fd=fopen("/proc/meminfo","r"))<=0)9.{10.returnfalse;11.}12.13.memset(buff,0,256);14.fgets(buff,sizeof(buff),fd);15.sscanf(buff,"%s%lu%s",m->name,&m->total,tmp);16.17.memset(buff,0,256);18.fgets(buff,
8、sizeof(buff),fd);//从fd文件中读取长度为buff的字符串再存到起始地址为buff这个空间里19.sscanf(buff,"%s%lu%s",m->name2,&m->fre