The following classes are public and are located in the boost::process namespace:
The following classes are private and are located in the boost::process::detail namespace (I hope this is a correct rationale for the detail namespace):
Consider Kevlin Henney's Boost.Threads critique (http://lists.boost.org/boost/2005/05/25846.php). I think it can also apply to the Process library. At the moment I have a very basic toy design/implementation with the following classes (and typedef):
namespace process { // process attributes (priority, etc.) - passed to launcher's constructor. class attributes;
// can wait on a process, retrieve its exit code, id, etc. class waiter_;
// return type of launcher::operator() member functions. typedef boost::shared_ptr<waiter_> waiter;
// builds a command line. example usage: // command_builder myprog("myprog"); // myprog.arg("abc").arg("bcd").arg("c d e"); class command_builder;
// handles launching of the processes. in my implementation has two // operator() member functions: one that takes an std::string (i.e., // what one passes to std::system()) and one that takes a command_builder. class launcher; }