1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- [/
- / Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- /
- / Distributed under the Boost Software License, Version 1.0. (See accompanying
- / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- /]
- [section:signals Signal Handling]
- Boost.Asio supports signal handling using a class called [link
- boost_asio.reference.signal_set 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 [link boost_asio.reference.signal_set 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.
- [heading See Also]
- [link boost_asio.reference.signal_set signal_set],
- [link boost_asio.examples.cpp03_examples.http_server HTTP server example (C++03)],
- [link boost_asio.examples.cpp11_examples.http_server HTTP server example (C++11)].
- [endsect]
|