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