
About the pid stuff, I need to add an argument that might help design child: std::thread (and boost::thread) also provide the id of the thread. They just provide the identifier using a platform specific type, letting the user use it with platform API functions. If child was designed this way and with RAII and move-only you would get: 1. execute() could be the child constructor (like thread constructor launch the thread if arguments are provided) - maybe child could be changed to child_process then. 2. no need for id-based constructors. 3. clean interface with only one function that return a platform-specific type. 4. sharing would be explicit, as said before A note looking quickly at the source: In process/config.hpp #elif defined(BOOST_WINDOWS_API) # include <Windows.h> This is a bit heavy. Don't you need to precede this header with WIN32_LEAN_AND_MEAN ? (see http://en.wikipedia.org/wiki/Windows.h) In child.hpp Why are (platform-specific) members public? Joel Lamotte