### Signal Handling

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 Asio.

    void handler(
        const asio::error_code& error,
        int signal_number)
    {
      if (!error)
      {
        // A signal occurred.
      }
    }

    ...

    // Construct a signal set registered for process termination.
    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.

##### See Also

signal_set, HTTP server example (C++03), HTTP server example (C++11).