• 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;
    }
  • 相关阅读:
    watch 监听路由的改变
    三元运算符
    element-ui动态更改el-table某个单元格字体颜色
    vue 跨域问题导致前端无法携带cookie
    Vue 用checkbox实现两两组合多选且禁用第三个。
    表格数据宽度自适应方案
    echarts细节问题
    es6 解构赋值
    学习笔记-Python基础15-持久化-文件、pickle、shelve
    学习笔记-Python基础14-PyCharm调试
  • 原文地址:https://www.cnblogs.com/thegodofthunder/p/7227363.html
Copyright © 2020-2023  润新知