本文共 2421 字,大约阅读时间需要 8 分钟。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int zgetcpuinfo(int *cores,int *frequency) { FILE *fp; char *pbuffer=NULL; size_t buflen; int ret; char tmpBuffer[32]; int i,j; fp = fopen("/proc/cpuinfo", "r"); if (NULL == fp) { printf("open /proc/cpuinfo failed!\n"); return -1; } /** * loop to read buffer. */ while (getline(&pbuffer, &buflen, fp)!=-1) { //printf("%s\n", pbuffer); if(strstr(pbuffer,"cpu cores")!=NULL) { //printf("cores:%s\n", pbuffer); memset(tmpBuffer,0,sizeof(tmpBuffer)); for(i=0,j=0;i<strlen(pbuffer);i++) { if(isdigit(pbuffer[i])) { tmpBuffer[j++]=pbuffer[i]; } } //printf("cores:%s\n",tmpBuffer); *cores=atoi(tmpBuffer); } if(strstr(pbuffer,"cpu MHz")!=NULL) { //printf("cpu MHz:%s\n", pbuffer); memset(tmpBuffer,0,sizeof(tmpBuffer)); for(i=0,j=0;i<strlen(pbuffer);i++) { if(isdigit(pbuffer[i])) { tmpBuffer[j++]=pbuffer[i]; } } //printf("Free:%s\n",tmpBuffer); *frequency=atoi(tmpBuffer); } } if (pbuffer!=NULL) { free(pbuffer); pbuffer = NULL; } fclose(fp); return 0; } int main(void) { int cores,frequency; if(zgetcpuinfo(&cores,&frequency)<0) { printf("get cpuinfo failed!\n"); }else{ printf("cores:%d ,Frequency:%d \n",cores,frequency); } return 0; }#include <stdio.h>
#include <stdlib.h> #include <string.h> #include <ctype.h> int zgetmeminfo(int *memTotal,int *memFree) { FILE *fp; char *pbuffer=NULL; size_t buflen; int ret; char tmpBuffer[32]; int i,j; fp = fopen("/proc/meminfo", "r"); if (NULL == fp) { printf("open /proc/meminfo failed!\n"); return -1; } /** * loop to read buffer. */ while (getline(&pbuffer, &buflen, fp)!=-1) { //printf("%s\n", pbuffer); if(strstr(pbuffer,"MemTotal")!=NULL) { printf("MemTotal:%s\n", pbuffer); memset(tmpBuffer,0,sizeof(tmpBuffer)); for(i=0,j=0;i<strlen(pbuffer);i++) { if(isdigit(pbuffer[i])) { tmpBuffer[j++]=pbuffer[i]; } } printf("Total:%s\n",tmpBuffer); *memTotal=atoi(tmpBuffer); } if(strstr(pbuffer,"MemFree")!=NULL) { printf("MemFree:%s\n", pbuffer); memset(tmpBuffer,0,sizeof(tmpBuffer)); for(i=0,j=0;i<strlen(pbuffer);i++) { if(isdigit(pbuffer[i])) { tmpBuffer[j++]=pbuffer[i]; } } printf("Free:%s\n",tmpBuffer); *memFree=atoi(tmpBuffer); } } if (pbuffer!=NULL) { free(pbuffer); pbuffer = NULL; } fclose(fp); return 0; } int main(void) { int memTotal,memFree; if(zgetmeminfo(&memTotal,&memFree)<0) { printf("get meminfo failed!\n"); }else{ printf("Total:%d kb,Free:%d kb\n",memTotal,memFree); } return 0; }转载地址:http://owzji.baihongyu.com/