我正在使用boost :: asio编写套接字客户端类型的应用程序。我正在做类似于他们使用asio::signal_set
来捕获信号的示例,并且在信号处理程序中,他们调用io_service::stop
来优雅地停止客户端并退出程序。
但是,io_service::run
会在没有其他工作要做(或stop
被调用)时返回,不幸的是,signal_set
算作工作。因此,即使我的客户端失去工作,它仍然在等待一个信号来调用信号处理程序,程序只能在你按Ctrl-C或其他任何东西时结束。我希望当收到信号 或套接字退出给io_service
工作时退出,即正常退出。
有没有办法可以让io_service
继续运行,只要有其他工作而不是信号处理程序? (我不能自己打stop
,因为我不知道什么时候没有工作;只有io_service
知道。)
答案 0 :(得分:1)
如何自己捕捉信号并停止捕捉io_service
?