// Copyright (c) 2006, 2007 Julio M. Merino Vidal // Copyright (c) 2008 Ilya Sokolov, Boris Schaeling // Copyright (c) 2009 Boris Schaeling // Copyright (c) 2010 Felipe Tanus, Boris Schaeling // Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include namespace bp = boost::process; int main() { // bp::system( "test.exe", bp::std_out > stdout, //forward bp::std_err.close(), //close bp::std_in < bp::null //null in ); boost::filesystem::path p = "input.txt"; bp::system( "test.exe", (bp::std_out & bp::std_err) > "output.txt", //redirect both to one file bp::std_in < p //read input from file ); { bp::opstream p1; bp::ipstream p2; bp::system( "test.exe", bp::std_out > p2, bp::std_in < p1 ); p1 << "my_text"; int i = 0; p2 >> i; } { boost::asio::io_context io_context; bp::async_pipe p1(io_context); bp::async_pipe p2(io_context); bp::system( "test.exe", bp::std_out > p2, bp::std_in < p1, io_context, bp::on_exit([&](int exit, const std::error_code& ec_in) { p1.async_close(); p2.async_close(); }) ); std::vector in_buf; std::string value = "my_string"; boost::asio::async_write(p1, boost::asio::buffer(value), []( const boost::system::error_code&, std::size_t){}); boost::asio::async_read (p2, boost::asio::buffer(in_buf), []( const boost::system::error_code&, std::size_t){}); } { boost::asio::io_context io_context; std::vector in_buf; std::string value = "my_string"; bp::system( "test.exe", bp::std_out > bp::buffer(in_buf), bp::std_in < bp::buffer(value) ); } { boost::asio::io_context io_context; std::future> in_buf; std::future write_fut; std::string value = "my_string"; bp::system( "test.exe", bp::std_out > in_buf, bp::std_in < bp::buffer(value) > write_fut ); write_fut.get(); in_buf.get(); } }