### linux系统获取CPU、内存、存储空间信息

linux系统获取CPU、内存、存储空间信息

实现思路

学到了两种实现思路:

  • 从/proc目录下获取设备的信息

代码实现:

void getMemoryInfo()
{
	/*
		此函数获取内存信息
	*/
    char MemTotal[256];
    char MemFree[256];
 
     char filename[] = "/proc/meminfo"; //文件名
     FILE *fp;
     if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
     {
         printf("error!");
     }
     int start=0;
     while (!feof(fp)&&start<2)			//在这里读取的时候回多出一行,我使用  fgetc(fp) != EOF代替了
     {
         if(start==0){
            fgets(MemTotal,256,fp);  
            printf("%s\n", MemTotal); //输出
         }else if(start==1){
            fgets(MemFree,256,fp);  
            printf("%s\n", MemFree); //输出
            break;
         }
         start++;
     }
     fclose(fp);  
    int MemTotal_int=StringToInteger(MemTotal);
    int MemFree_int=StringToInteger(MemFree);
    printf("%d\n",MemTotal_int);
    printf("%d\n",MemFree_int);
    
}

这里有写了一个提取Char中的int 的函数:

int StringToInteger(char*p)
{
    int value=0;
    while(*p!='\0')
    {
    if((*p>='0')&&(*p<='9'))
    {
        value=value*10+*p-'0';
    }
    p++;
    }
    return value;
}

对于读取硬盘信息的方法:

double getHardDiskInfo()
{
    /*
        这里返回可用的存储空间
    */
  int fd;
  unsigned long numblocks=0;
  fd = open("/dev/sda", O_RDONLY);
  ioctl(fd, BLKGETSIZE64, &numblocks);
  close(fd);
  printf("Number of blocks: %ld, this makes %.3f GB\n",numblocks, (double)numblocks * 512.0 / (1024 * 1024 * 1024));
  return (double)numblocks * 512.0 / (1024 * 1024 * 1024);
}
  • 再一种实现思想是通过system()调用命令符,然后使用popen()返回命令符结果,再对返回的字符串进行解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值