Я использую Boost Process
в асинхронном режиме, чтобы получить stdout
, stderr
и код возврата команды оболочки.В приведенном ниже фрагменте кода требуется ли вызов c.wait()
?В соответствии с Boost Process 1.68
документацией это не требуется там, где требуется в соответствии с , что из boost process 1.65.1
.
std::string command = "ls";
boost::asio::io_service ios;
std::future<std::string> dataOut;
std::future<std::string> dataErr;
bp::child c(command, bp::std_in.close(), bp::std_out > dataOut, bp::std_err > dataErr, ios);
ios.run();
c.wait();
stdOut = dataOut.get();
stdErr = dataErr.get();
returnStatus = c.exit_code();
Теперь я использую Boost 1.68
, и когда я удаляю вызов на c.wait()
, я получаю returnStatus
127
вместо ожидаемого 0
, которое я получаю, когдаЯ добавляю вызов c.wait()
.Какое значение имеет звонок c.wait()
?