@andrejfomenko

Как получить результат выполнения консольной команды в переменную?

Здравствуйте, суть я выполняю через system() консольную команду, далее в консоль приходит результат, как мне его поместить в переменную, пробовал getline(), getenv() но ничего не выходит
  • Вопрос задан
  • 3084 просмотра
Пригласить эксперта
Ответы на вопрос 5
flygrounder
@flygrounder
Python/Django
Запишите результат выполнения команды в файл, если есть такая возможность, а затем считайте из него нужную информацию через C++
Ответ написан
Комментировать
profesor08
@profesor08
Никак, функция возвращает int. Но вывод все таки получить можно:
system("dir > file.txt");

Таким образом сохраняешь весь вывод в файл, и тебе остается только его считать.
Ответ написан
Комментировать
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Какая ОС? Универсальный но костыльный метод вам указали выше - писать в файл, только ещё желательно редиректить ошибки отдельно, но я не уверен, что в винде это делается также, как в никсах. Правильный метод - использовать средства ОС, для windows вот первое, что нагуглил https://msdn.microsoft.com/ru-ru/library/windows/d... и соответственно для linux https://stackoverflow.com/questions/478898/how-to-...
Ещё можно использовать Qt, он сам сделает всё с помощью магии, чтоб работало на разных ОС doc.qt.io/qt-5/qprocess.html
Ответ написан
@res2001
Developer, ex-admin
В описании вызова system:
"If command is not a null pointer, the value returned depends on the system and library implementations, but it is generally expected to be the status code returned by the called command, if supported."
Т.е. возвращаемое функцией значение зависит от реализации, но обычно это должен быть код возврата вызываемой команды.
Можете протестировать свою реализацию, вызывая с помощью система простейший батник:
Содержимое батника:
exit /b <код возврата>
Ответ написан
Комментировать
dio4
@dio4
team leader, system engineer, master of sports
Раз программа будет взаимодействовать с ОС, то оптимально зная, что это за ОС использовать ее средства, а не "удовлетворяющие в общем всех, но хорошо - никого в частности". Склоняюсь к решению, предложенному devalone.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы