使用Boost.Process捕获exe的输出以进行测试

时间:2017-03-26 02:53:11

标签: c++ boost boost-asio

我正在尝试使用Boost.Process来构建test.exe输出的测试。

std::string exe = "test.exe";

boost::asio::io_service ios;
boost::process::async_pipe ap(ios);
boost::process::opstream stream
boost::process::child sim(exe, boost::process::std_out > ap, boost::process::std_in < stream);

std::vector<char> buf;
boost::asio::async_read(ap, boost::asio::buffer(buf), [](const boost::system::error_code &ec, std::size_t size) {});

ios.run();

stream << "Test";

如果我运行上面的代码,则buf为空。使buf包含“Test”的最简单方法是什么?对于我的测试,我需要将一些字符串发送到cin并捕获生成的cout。

这是我的简单测试程序:

int main() {
    std::string line;
    while (std::cin) {
        std::getline(std::cin, line);
        std::cout << line;
    }
}

0 个答案:

没有答案