Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2013. The current version is 1.90.0.
Boost.Asio supports programs that utilise the fork() system call. Provided the program calls
io_service.notify_fork()
at the appropriate times, Boost.Asio will recreate any internal file descriptors
(such as the "self-pipe trick" descriptor used for waking up
a reactor). The notification is usually performed as follows:
io_service_.notify_fork(boost::asio::io_service::fork_prepare); if (fork() == 0) { io_service_.notify_fork(boost::asio::io_service::fork_child); ... } else { io_service_.notify_fork(boost::asio::io_service::fork_parent); ... }
User-defined services can also be made fork-aware by overriding the io_service::service::fork_service()
virtual function.
Note that any file descriptors accessible via Boost.Asio's public API (e.g.
the descriptors underlying basic_socket<>, posix::stream_descriptor,
etc.) are not altered during a fork. It is the program's responsibility
to manage these as required.
io_service::notify_fork(), io_service::fork_event, io_service::service::fork_service(), Fork examples.