From 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 20:24:20 +0200 Subject: Adding upstream version 14.2.21. Signed-off-by: Daniel Baumann --- src/boost/libs/process/example/io.cpp | 91 +++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/boost/libs/process/example/io.cpp (limited to 'src/boost/libs/process/example/io.cpp') diff --git a/src/boost/libs/process/example/io.cpp b/src/boost/libs/process/example/io.cpp new file mode 100644 index 00000000..1b1e8eb7 --- /dev/null +++ b/src/boost/libs/process/example/io.cpp @@ -0,0 +1,91 @@ +// 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(); + } +} -- cgit v1.2.3