在c文件中执行bash命令,并将输出存储在数组中

在c文件中执行bash命令,并将输出存储在数组中,c,operating-system,C,Operating System,我试图在我的c程序中将页面错误的数量存储到一个数组中。我想执行bash命令并将其输出存储在一个数组中。 这是我的命令 $ cat /proc/vmstat | grep pgfault 一个简单的开始,可以修饰和改进 char * lines[2000]; /* 2000 lines enough? */ int n = 0; FILE * fp = popen("your command here", "r"); if (fp == NULL) abort(); l

我试图在我的c程序中将页面错误的数量存储到一个数组中。我想执行bash命令并将其输出存储在一个数组中。 这是我的命令

$ cat /proc/vmstat | grep pgfault

一个简单的开始,可以修饰和改进

char * lines[2000];         /* 2000 lines enough? */
int    n = 0;

FILE * fp = popen("your command here", "r");
if (fp == NULL) abort();

lines[0] = malloc(1000);    /* 1000 byte lines enough? */
while ((fgets(lines[n], 1000, fp) != NULL) {
    if (n == 1999) abort();       /* oh crud... */
    lines[++n] = malloc(1000);
}
free(lines[n]);
pclose(fp);
/* do something with lines[0 .. n-1] here */
/* then free them */

popen()
plus
fread()
。在您的C程序中包含该行,该行创建一个数组,然后准备将数据存储在一个循环中。它确实可以被修饰,也许可以避免泄漏1999行(在最坏的情况下)。