• 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;
    }
  • 相关阅读:
    2019.10.11CSS
    2019.10.11 THML
    虚拟机FAQ
    thinkpad安装虚拟机 开启虚拟功能要在bios的security里面设置
    JDK在windows系统下环境变量的设置
    有关operamasks-ui的一些信息汇总
    从用List给ArrayList赋值看容器的传值,最好用.addAll
    给eclipse安装svn插件
    Java接口 枚举型Enumeration
    linux下的grep命令
  • 原文地址:https://www.cnblogs.com/thegodofthunder/p/7227363.html
Copyright © 2020-2023  润新知