Как вызвать программу и считать её вывод?
Необходимо запустить внешнюю программу и прочитать её стандартный вывод. Внешняя программа запускается, выводит результат и сразу завершается, например ls. Платформа linux, язык программирования c++, нужно использовать только стандартную библиотеку и системные вызовы.
Пока есть только такой вариант
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
std::system("ls >lsout.txt");
std::cout << std::ifstream("lsout.txt").rdbuf();
}
Ответы (1 шт):
Автор решения: Maxim
→ Ссылка
Возможно использовать функцию popen()
fflush(stdout);
FILE* fd = popen(cmd.c_str(), "r");
if (fd != nullptr) {
char buf[10];
for (int r = 0; (r = fread(buf, 1, sizeof(buf), fd)) > 0;) {
out_data.append(static_cast<const char*>(buf), r);
}
pclose(fd);
}