File: quickstart.cpp

package info (click to toggle)
boost1.90 1.90.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 593,120 kB
  • sloc: cpp: 4,190,908; xml: 196,648; python: 34,618; ansic: 23,145; asm: 5,468; sh: 3,774; makefile: 1,161; perl: 1,020; sql: 728; ruby: 676; yacc: 478; java: 77; lisp: 24; csh: 6
file content (63 lines) | stat: -rw-r--r-- 1,487 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <boost/process.hpp>
#include <boost/asio.hpp>

namespace asio = boost::asio;
using boost::process::process;


int main(int /*argv*/, char ** /*argv*/)
{
  asio::io_context ctx;
  {
    //tag::cp[]
    // process(asio::any_io_executor, filesystem::path, range<string> args, AdditionalInitializers...)
    process proc(ctx.get_executor(), // <1>
                 "/usr/bin/cp", // <2>
                 {"source.txt", "target.txt"} // <3>
    ); // <4>
    //end::cp[]
  }
  {
    //tag::ls[]
    process proc(ctx, "/bin/ls", {});
    assert(proc.wait() == 0);
    //end::ls[]
  }
  {
    //tag::terminate[]
    process proc(ctx, "/bin/totally-not-a-virus", {});
    proc.terminate();
    //end::terminate[]
  }
  {
    //tag::request_exit[]
    process proc(ctx, "/bin/bash", {});
    proc.request_exit();
    proc.wait();
    //end::request_exit[]
  }
  {
    //tag::interrupt[]
    process proc(ctx, "/usr/bin/addr2line", {});
    proc.interrupt();
    proc.wait();
    //end::interrupt[]
  }
  {
    //tag::execute[]
    assert(execute(process(ctx, "/bin/ls", {})) == 0);
    //end::execute[]
  }
  {
    //tag::async_execute[]
    async_execute(process(ctx, "/usr/bin/g++", {"hello_world.cpp"}))
        (asio::cancel_after(std::chrono::seconds(10), asio::cancellation_type::partial)) // <1>
        (asio::cancel_after(std::chrono::seconds(10), asio::cancellation_type::terminal)) //<2>
        (asio::detached);
    //end::async_execute[]
    ctx.run();
  }
  return 0;
}