1<?xml version="1.0" standalone="yes"?> 2<programlisting> 3for (auto & 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 & 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 & 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 & 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 & 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>