...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Boost.Asio supports signal handling using a class called signal_set.
Programs may add one or more signals to the set, and then perform an async_wait()
operation. The specified handler will be called when one of the signals occurs.
The same signal number may be registered with multiple signal_set
objects, however the signal number must be used only with Boost.Asio.
void handler( const boost::system::error_code& error, int signal_number) { if (!error) { // A signal occurred. } } ... // Construct a signal set registered for process termination. boost::asio::signal_set signals(io_context, SIGINT, SIGTERM); // Start an asynchronous wait for one of the signals to occur. signals.async_wait(handler);
Signal handling also works on Windows, as the Microsoft Visual C++ runtime library maps console events like Ctrl+C to the equivalent signal.
signal_set, HTTP server example (C++03), HTTP server example (C++11).