小编cod*_*der的帖子

boost :: asio signal_set处理程序仅在捕获到第一个信号后执行,并忽略相同类型的连续信号

我有一个程序,并希望通过发送SIGINT一些数据写入文件而不是立即退出来阻止它.但是,如果程序的用户SIGINT再次发送,则程序应立即退出并忘记将数据写入文件.

出于便携性原因,我想boost::asio用于此目的.

我的初始(简化)方法(见下文)不起作用.这是不可能的还是我错过了什么?

处理程序似乎只被调用一次(打印出消息),当循环达到最大迭代次数时,程序总是停止.

void handler(
const boost::system::error_code& error,
int signal_number) {
    if (!error) {
        static bool first = true;
        if(first) {
            std::cout << " A signal(SIGINT) occurred." << std::endl;
            // do something like writing data to a file
            first = false;
        }
        else {
            std::cout << " A signal(SIGINT) occurred, exiting...." << std::endl;
            exit(0);
        }
    }
}

int main() {
    // Construct a signal set registered for process termination.
    boost::asio::io_service io;
    boost::asio::signal_set signals(io, …
Run Code Online (Sandbox Code Playgroud)

c++ boost signals boost-asio

4
推荐指数
1
解决办法
3489
查看次数

标签 统计

boost ×1

boost-asio ×1

c++ ×1

signals ×1