|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
信号管理器 更多...
#include <signal.hpp>
Public 类型 | |
| enum class | event { INTERRUPT = CTRL_C_EVENT , CTRL_BREAK = CTRL_BREAK_EVENT , CLOSE = CTRL_CLOSE_EVENT , LOGOFF = CTRL_LOGOFF_EVENT , SHUTDOWN = CTRL_SHUTDOWN_EVENT , TERMINATE = 1000 , ABORT = 1001 , ILLEGAL_INSTR = 1002 , FLOATING_POINT = 1003 , SEGMENT_FAULT = 1004 , BUS_ERROR = 1005 , PIPE_BROKEN = 1006 , ALARM = 1007 , HANGUP = 1008 , USER1 = 1009 , USER2 = 1010 , TIMEOUT = 2000 , CUSTOM_1 = 2001 , CUSTOM_2 = 2002 , FORCE_EXIT = 9999 } |
| 信号事件枚举 更多... | |
| using | signal_handler = function<bool(event, void*)> |
| 信号处理函数类型 | |
Public 成员函数 | |
| void | register_handler (event event, signal_handler handler) |
| 注册信号处理函数 | |
| void | register_handlers (const vector< event > &events, const signal_handler &handler) |
| 批量注册信号处理函数 | |
| void | remove_handler (event event) |
| 移除信号处理函数 | |
| event | wait_for_signal (int timeout_ms=-1) |
| 等待信号 | |
| void | send_signal (event event, void *context=nullptr) |
| 发送信号 | |
| void | set_force_exit_timeout (int timeout_ms) |
| 设置强制退出超时时间 | |
| void | start_monitoring () |
| 启动信号监控 | |
| void | stop_monitoring () noexcept |
| 停止信号监控 | |
| void | reset_force () |
| 强制重置信号管理器状态 | |
| bool | is_running () const |
| 检查是否正在运行 | |
| bool | block_signals (const vector< event > &signals_to_block) const |
| 阻塞指定信号(仅Linux) | |
| bool | unblock_signals (const vector< event > &signals_to_unblock) const |
| 解除阻塞指定信号(仅Linux) | |
静态 Public 成员函数 | |
| static system_signal_manager & | instance () |
| 获取单例实例 | |
| static bool | is_platform_signal (event event) |
| 判断事件是否为平台原生信号 | |
| using system_signal_manager::signal_handler = function<bool(event, void*)> |
|
strong |
信号事件枚举
统一的信号事件定义。
在文件 signal.hpp 第 57 行定义.
|
inlinestatic |
获取单例实例
在文件 signal.hpp 第 200 行定义.
引用了 instance().
被这些函数引用 instance(), signal_guard::signal_guard() , 以及 signal_guard::~signal_guard().
|
inlinestaticnodiscard |
判断事件是否为平台原生信号
| event | 事件 |
在文件 signal.hpp 第 291 行定义.
引用了 is_platform_signal().
被这些函数引用 is_platform_signal().
|
nodiscard |
| void system_signal_manager::register_handler | ( | event | event, |
| signal_handler | handler ) |
| void system_signal_manager::register_handlers | ( | const vector< event > & | events, |
| const signal_handler & | handler ) |
批量注册信号处理函数
| events | 信号事件列表 |
| handler | 处理函数 |
| void system_signal_manager::remove_handler | ( | event | event | ) |
移除信号处理函数
| event | 信号事件 |
| void system_signal_manager::reset_force | ( | ) |
| void system_signal_manager::send_signal | ( | event | event, |
| void * | context = nullptr ) |
发送信号
| event | 信号事件 |
| context | 上下文数据(可选) |
| void system_signal_manager::set_force_exit_timeout | ( | int | timeout_ms | ) |
设置强制退出超时时间
| timeout_ms | 超时时间(毫秒) |
超过此时间未处理的信号将被丢弃。
解除阻塞指定信号(仅Linux)
| signals_to_unblock | 要解除的信号集合 |
引用了 unblock_signals().
被这些函数引用 unblock_signals().
| event system_signal_manager::wait_for_signal | ( | int | timeout_ms = -1 | ) |
等待信号
| timeout_ms | 超时时间(毫秒),-1表示无限等待 |
阻塞当前线程直到收到信号或超时。