summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/process/example/io.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/process/example/io.cpp
parentInitial commit. (diff)
downloadceph-upstream.tar.xz
ceph-upstream.zip
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/process/example/io.cpp')
-rw-r--r--src/boost/libs/process/example/io.cpp91
1 files changed, 91 insertions, 0 deletions
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 <boost/process.hpp>
+#include <string>
+
+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<char> 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<char> 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<std::vector<char>> in_buf;
+ std::future<void> 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();
+ }
+}