无法在Windows下向boost :: asio :: signal_set添加信号

时间:2013-11-05 10:49:29

标签: c++ windows boost signals boost-asio

我正在尝试在Windows下使用boost :: asio等待信号,但我无法添加信号。这就是我试过的:

boost::asio::io_service ioService;
boost::asio::signal_set quitSignals(ioService);
quitSignals.add(CTRL_C_EVENT);
quitSignals.add(CTRL_BREAK_EVENT);
quitSignals.add(CTRL_CLOSE_EVENT);
quitSignals.add(CTRL_LOGOFF_EVENT);
quitSignals.add(CTRL_SHUTDOWN_EVENT);

这给出了第一个调试断言(“无效信号或错误”,0),以及其他的无效参数异常。我使用错误的信号编号吗?我使用的常量在wincon.h中定义如下:

#define CTRL_C_EVENT        0
#define CTRL_BREAK_EVENT    1
#define CTRL_CLOSE_EVENT    2
// 3 is reserved!
// 4 is reserved!
#define CTRL_LOGOFF_EVENT   5
#define CTRL_SHUTDOWN_EVENT 6

1 个答案:

答案 0 :(得分:1)

我确实使用了错误的常量。常量与signal.h中定义的Linux(SIGINTSIGTERM,...)相同。

之前我使用过SetConsoleCtrlHandler API(使用CTRL_C_EVENT,...)。是什么让我感到困惑。