windows_pseudocode.xml 1.8 KB

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