信号处理
Asio通过signal_set类来实现信号处理。程序添加信号到该集合中,然后执行async_wait()操作。指定的回调会在信号发生时被调用。同一个信号可以在多个signal_set对象中执行,信号量只能在Asio中运行。
void handler(
const asio::error_code& error,
int signal_number)
{
if(!error)
{
// A signal occurred.
}
}
...
// Construct a singal set registered for process termination.
asio::signal_set signals(io_service, SIGINT, SIGTERM);
// Start an asynchronous wait for one of the signals to occur.
signals.async_wait(handler);
信号处理在Windows中同样存在,在MVC++ 运行库中使用Ctrl+C这样的信号来执行命令。
参见
signal_set, HTTP server example (C++03), HTTP server example (C++11)