1<?xml version="1.0" standalone="yes"?>
2<programlisting>
3for (auto &amp; s : seq)
4    s.<methodname alt="boost::process::extend::handler::on_setup">on_setup</methodname>(*this);
5
6if (<methodname alt="boost::process::extend::windows_executor::error">error</methodname>())
7{
8    for (auto &amp; s : seq)
9       s.<methodname alt="boost::process::extend::handler::on_error">on_error</methodname>(*this, <methodname alt="boost::process::extend::windows_executor::error">error</methodname>());
10    return <classname alt="boost::process::child">child</classname>();
11}
12int err_code = <ulink url="https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425.aspx">CreateProcess</ulink>(
13         exe,
14         cmd_line,
15         proc_attrs,
16         thread_attrs,
17         creation_flags,
18         env,
19         work_dir,
20         startup_info,
21         proc_info);
22
23<classname alt="boost::process::child">child</classname> c(proc_info, exit_code);
24
25if (<methodname alt="boost::process::extend::windows_executor::error">error</methodname>())
26    for (auto &amp; s : seq)
27        s.<methodname alt="boost::process::extend::handler::on_error">on_error</methodname>(*this, <methodname alt="boost::process::extend::windows_executor::error">error</methodname>());
28else
29    for (auto &amp; s : seq)
30        s.<methodname alt="boost::process::extend::handler::on_error">on_success</methodname>(*this);
31
32//now we check again, because a on_success handler might've errored.
33if (<methodname alt="boost::process::extend::windows_executor::error">error</methodname>())
34{
35    for (auto &amp; s : seq)
36        s.<methodname alt="boost::process::extend::handler::on_error">on_error</methodname>(*this, <methodname alt="boost::process::extend::windows_executor::error">error</methodname>());
37    return <classname alt="boost::process::child">child</classname>();
38}
39else
40    return c;
41
42</programlisting>