• c语言执行linux命令并通过结构体返回每行命令的输出


        #include <stdio.h>  
        #include <stdlib.h>  
        #include <unistd.h>   
        #define MAXBUFSIZE 1024
        
        typedef struct pro{
            char  pid[20];
            char user[20] ;
            char pr[20];
            char ni[20];
            char  virt[20];
            char res[20];
            char shr[20];
            char s[4];
            char pcpu[20];
            char pmem[20];
            char time[20];
            char command[100];
            } SVR_PRO;
            
        int getSvrInfo(SVR_PRO p[]);
        
        int main(){  
            SVR_PRO arr[30]={};
            int len = getSvrInfo(arr);
    
            int i = 0;
            for(;i<len-1;i++){
                    printf("%s,%s
    ",arr[i].pid,arr[i].user);
                }
            }
            
        int getSvrInfo(SVR_PRO p[]){
                FILE *f;
                char cmd[]="top -n 1";
                char buffer[MAXBUFSIZE];
                char null[20];
                FILE* pipe = popen(cmd, "r");    
                if (!pipe)  return -1;    
                int i=0,k=0;
                for(;fgets(buffer, sizeof(buffer), pipe)!=NULL;k++){
                        if(k<7) {continue;}
                        sscanf(buffer,"%s %s %s %s %s %s %s %s %s %s %s %s %s",null,p[i].pid,p[i].user,p[i].pr,p[i].ni,p[i].virt,p[i].res,p[i].shr,p[i].s,p[i].pcpu,p[i].pmem,p[i].time,p[i].command);
                        //printf("%d--------------------------%s,%s,%s,%s,%s,%s
    ",i,p[i].pid,p[i].user,p[i].pr,p[i].ni,p[i].virt,p[i].shr);
                        i++;
                    }
                pclose(pipe);  
                return i;
            }

     控制台打印:

    1,root
    2,root
    3,root
    5,root
    7,root
    8,root
    10,root
    11,root
    12,root
    13,root
  • 相关阅读:
    namespace
    kubernetes环境搭建
    verdaccio私有仓库搭建
    mysql中间件proxysql
    MySQL存储引擎
    关于分布式系统
    转载:ETL讲解
    用原生JS 写Web首页轮播图
    javascript——记忆小便签
    转载:JavaScript 的 this 原理
  • 原文地址:https://www.cnblogs.com/airduce/p/9067206.html
Copyright © 2020-2023  润新知