zoukankan      html  css  js  c++  java
  • Linux c 获取cpu使用率

    部分代码改编自来自http://blog.csdn.net/primeprime/article/details/41458731

    主要的原理就是获取top -n 1 | grep Cpu执行的结果,并且解析出需要的参数。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #define READ 1
    #define WRITE 2
    #define CPU_ORDER "top -n 1 | grep Cpu"
    
    
    //执行命令行,并且读取写入数据
    //参数一:命令行
    //参数二:执行结果
    //参数三:读写选项,默认为1就好,我并没有写写命令行有关的函数
    //返回值:成功返回1,失败返回0
    //待修改:我并没有写写命令行有关的函数,不过不影响功能
    int executeCmd(char *cmd,char *result,int option)
    {
        char buffer[1024];
        char fileOption[10]="r";
        FILE *file=NULL;
    
        if((NULL==cmd)||(NULL==result))
        {
            printf("
    executeCmd param null!
    ");
            return 0;
        }
    
        switch(option)
        {
            case READ:
            {
                strcpy(fileOption,"r");
                break;
            }
            case WRITE:
            {
                strcpy(fileOption,"w");
                break;
            }
            default:
            {
                break;
            }
    
        }
    
        if(NULL==(file=popen(cmd,fileOption)))//打开通道
        {
            perror("executeCmd popen fail!");
            return 0;
        }
    
        strcpy(result,"");
    
        while(NULL!=fgets(buffer,1024,file))//读取结果
        {
            strcat(result,buffer);
        }
    
        if(-1==pclose(file))//关闭通道
        {
            perror("executeCmd pclose fail!");
            return 0;
        }
    
        return 1;
    }
    
    
    //获取cpu的用户使用率和系统使用率
    //参数一、参数二:存储cpu用户使用率和系统使用率的参数
    int getCpuInfo(char *cpuUser,char *cpuSystem)
    {
        char buffer[2000]="";
        int flag;
        if((NULL==cpuUser)||(NULL==cpuSystem))
        {
            printf("
    getCpuInfo param null!
    ");
            return 0;
        }
    
        if(1==(flag=executeCmd(CPU_ORDER,buffer,READ)))//执行top -n 1 | grep Cpu命令
        {
    
            sscanf(buffer,"%*s%s%*s%s%*s",cpuUser,cpuSystem);//读取cpu用户使用率和系统使用率
        }
        return 1;
    }
    
    int main()
    {
    
        char str1[20]="none";
        char str2[20]="none";
    
    
        getCpuInfo(str1,str2);
    
        printf("
    %s %s
    ",str1,str2);
      
        return 0;
    }
  • 相关阅读:
    【uniapp】改善中大型uniapp小程序项目开发体验
    vite试玩:老项目启动从6分钟到秒开
    修剪AST树减少webapck打包尺寸
    librispeech数据集下载
    语音识别性能评估方法
    2021.12.11 物联网考试
    2021.12.15 课程总结+加分项
    2021.12.9 观影大数据分析
    2021.12.8 Docker服务
    2021.12.10 阿里云服务器创建
  • 原文地址:https://www.cnblogs.com/thegodofthunder/p/7227363.html
Copyright © 2011-2022 走看看