在C程序中获取系统命令输出

Vik*_*oel 8 c unix io operating-system

有没有更好的方法呢?

int numOfCPU;
system("grep -c ^processor /proc/cpuinfo >> /tmp/cpuinfo");
FILE *fp = fopen("/tmp/cpuinfo", "r");
fscanf(fp, "%d", &numOfCPU);
fclose(fp);
system("rm /tmp/cpuinfo");
Run Code Online (Sandbox Code Playgroud)

我不想创建中间文件然后将其删除.

编辑:

它不是从文件中读取.命令可以是"ls"或"echo'Hello world'"

cas*_*rco 17

好吧,我在其他答案中感到困惑.无论如何,这个答案的哲学是一样的.您可以直接使用popen功能.

然后你有这样的事情:

int numOfCPU;
FILE *fp = popen("grep -c ^processor /proc/cpuinfo", "r");

fscanf(fp, "%d", &numOfCPU);
pclose(fp);
Run Code Online (Sandbox Code Playgroud)

我希望它会有用.