Я хочу использовать boost-process для чтения стандартного вывода из команды:
std::string command = "cat /tmp/my_file";
namespace bp = boost::process;
bp::ipstream is;
bp::child c(command, bp::std_out > is);
std::string line;
int no_lines = 0;
while (c.running() && std::getline(is, line) && !line.empty()) {
++no_lines;
}
c.wait();
std::cout << "line count: " << no_lines << "\n";
Это почти идентично учебному пособию по процессу повышения .
Для тестирования «команда» просто выводит текстовый файл, содержащий 10000 строк.
Проблема в том, что мой код не читает все выходные данные команды (в тестовом случае он читает только около 9700 строк).
Что я делаю не так?
Кажется, что дочерний процесс завершается до того, как весь stdout будет прочитан.