信号处理

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)

results matching ""

    No results matching ""