Boost C++ 库

...世界上最受推崇和设计精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码规范

信号处理 - Boost C++ 函数库
PrevUpHomeNext

Boost.Asio 使用名为 signal_set 的类支持信号处理。程序可以向集合中添加一个或多个信号,然后执行 async_wait() 操作。当其中一个信号发生时,将调用指定的处理程序。同一个信号编号可以注册到多个 signal_set 对象中,但是该信号编号只能与 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);

信号处理在 Windows 上也能工作,因为 Microsoft Visual C++ 运行时库将 Ctrl+C 等控制台事件映射到等效的信号。

另请参阅

signal_setHTTP 服务器示例 (C++11)


PrevUpHomeNext