【问题标题】:Cannot add signals to boost::asio::signal_set under Windows无法在 Windows 下向 boost::asio::signal_set 添加信号
【发布时间】:2013-11-05 10:49:28
【问题描述】:

我正在尝试在 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

【问题讨论】:

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


    【解决方案1】:

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

    我之前使用过SetConsoleCtrlHandler API(它使用CTRL_C_EVENT,...)。这让我很困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多