Boost Asio:捕获信号而不保持运行完成的io_service

时间:2013-11-10 20:55:51

标签: c++ boost boost-asio

我正在使用boost :: asio编写套接字客户端类型的应用程序。我正在做类似于他们使用asio::signal_set来捕获信号的示例,并且在信号处理程序中,他们调用io_service::stop来优雅地停止客户端并退出程序。

但是,io_service::run会在没有其他工作要做(或stop被调用)时返回,不幸的是,signal_set算作工作。因此,即使我的客户端失去工作,它仍然在等待一个信号来调用信号处理程序,程序只能在你按Ctrl-C或其他任何东西时结束。我希望当收到信号 套接字退出给io_service工作时退出,即正常退出。

有没有办法可以让io_service继续运行,只要有其他工作而不是信号处理程序? (我不能自己打stop,因为我不知道什么时候没有工作;只有io_service知道。)

1 个答案:

答案 0 :(得分:1)

如何自己捕捉信号并停止捕捉io_service