Управление результатом «системного» вызова в программе на C ++

1

Скажем, что я выполняю некоторую команду для запуска в терминале в программе 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;
}

Любая помощь будет очень высоко ценится. Еще раз спасибо.

Теги:
console

1 ответ

3
Лучший ответ

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

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

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

pclose(fp);
  • 0
    Привет Йоахим, спасибо за быстрый ответ. В этом контексте, что такое «буфер»? Спасибо!
  • 0
    @VincentRusso Это просто обычный буфер символов (см. fgets руководства fgets ).
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню