Я не хочу иметь дело с API ядра Windows, например CreateProcessA. Мне не удалось решить эту проблему.
Я использую код ниже,
Код: Выделить всё
asio::io_context ctx;
asio::writable_pipe wp{ ctx };
asio::readable_pipe rp{ ctx };
asio::readable_pipe erp{ ctx };
process proc(
ctx,
"C:\\Windows\\System32\\cmd.exe",
{},
bp::process_stdio{ wp, rp, erp }
);
std::string output;
boost::system::error_code ec;
asio::write(wp, asio::buffer("echo Hello from CMD\n"));
boost::asio::read(rp, asio::dynamic_buffer(output),boost::asio::transfer_all());
Я пробовал код ниже,
Код: Выделить всё
for (;;)
{
char buf[1024];
std::size_t n = rp.read_some(asio::buffer(buf), ec);
if (ec == asio::error::eof)
break;
if (ec)
throw boost::system::system_error(ec);
std::cout.write(buf, n);
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ostprocess
Мобильная версия