Манипулирование результатом "системного" вызова в программе на C ++ - PullRequest
1 голос
/ 12 февраля 2012

Скажите, что я выполняю некоторую команду для запуска в терминале в программе на C ++. Например:

int main(){
std::system("./myprog");
return 0;
}

Предположим, что myprog производит вывод, который выводится на консоль. Могу ли я использовать этот вывод в моей программе на C ++? Например:

int main(){
some_var = std::system("./myprog");

if (some_var == "something")
  // Do something.

return 0;
}

Любая помощь будет принята с благодарностью. Еще раз спасибо.

1 Ответ

3 голосов
/ 12 февраля 2012

Вам необходимо использовать функцию popen:

FILE *fp = popen("./myprog", "r");

char buffer[128];
while (fgets(buffer, sizeof(buffer), fp))
{
    std::cout << "Output from program: " << buffer << '\n';
}

pclose(fp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...