Получить системный вывод команды в C-программе

Есть ли лучший способ сделать это?

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");

Я не хочу создавать промежуточный файл и затем удалять его.

РЕДАКТИРОВАТЬ:

Это не о чтении из файла. Командой может быть "ls" или "echo 'Hello world'"

Ответы на вопрос(3)

Ваш ответ на вопрос