码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-21 16:08:12      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:pipe   comm   []   #define   eof   col   time   har   c语言   

    #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\n",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\n",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

 

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

标签:pipe   comm   []   #define   eof   col   time   har   c语言   

原文地址:https://www.cnblogs.com/airduce/p/9067206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!