NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
system_signal_manager类 参考

信号管理器 更多...

#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_managerinstance ()
 获取单例实例
static bool is_platform_signal (event event)
 判断事件是否为平台原生信号

详细描述

信号管理器

统一管理跨平台的信号处理,提供异步信号安全的分发机制。

特性:

  • 异步信号安全
  • 线程安全
  • 信号队列与超时清理
  • 自定义事件与强制退出

在文件 signal.hpp49 行定义.

成员类型定义说明

◆ signal_handler

信号处理函数类型

参数
event收到的信号事件
context上下文指针
返回
true 继续运行;false 请求退出

在文件 signal.hpp113 行定义.

成员枚举类型说明

◆ event

enum class system_signal_manager::event
strong

信号事件枚举

统一的信号事件定义。

枚举值
INTERRUPT 

Ctrl+C中断信号

CTRL_BREAK 

Ctrl+Break信号

CLOSE 

关闭控制台窗口

LOGOFF 

用户注销

SHUTDOWN 

系统关机

TERMINATE 

终止信号(模拟SIGTERM)

ABORT 

中止信号(模拟SIGABRT)

ILLEGAL_INSTR 

非法指令(模拟SIGILL)

FLOATING_POINT 

浮点异常(模拟SIGFPE)

SEGMENT_FAULT 

段错误(模拟SIGSEGV)

BUS_ERROR 

总线错误(模拟SIGBUS)

PIPE_BROKEN 

管道破裂(模拟SIGPIPE)

ALARM 

定时器信号(模拟SIGALRM)

HANGUP 

挂起信号(模拟SIGHUP)

USER1 

用户自定义信号1(模拟SIGUSR1)

USER2 

用户自定义信号2(模拟SIGUSR2)

TIMEOUT 

超时事件

CUSTOM_1 

自定义事件1

CUSTOM_2 

自定义事件2

FORCE_EXIT 

强制退出信号

在文件 signal.hpp57 行定义.

成员函数说明

◆ block_signals()

bool system_signal_manager::block_signals ( const vector< event > & signals_to_block) const

阻塞指定信号(仅Linux)

参数
signals_to_block要阻塞的信号集合
返回
是否成功

引用了 block_signals().

被这些函数引用 block_signals().

◆ instance()

system_signal_manager & system_signal_manager::instance ( )
inlinestatic

获取单例实例

返回
信号管理器实例引用

在文件 signal.hpp200 行定义.

引用了 instance().

被这些函数引用 instance(), signal_guard::signal_guard() , 以及 signal_guard::~signal_guard().

◆ is_platform_signal()

bool system_signal_manager::is_platform_signal ( event event)
inlinestaticnodiscard

判断事件是否为平台原生信号

参数
event事件
返回
是否平台原生信号

在文件 signal.hpp291 行定义.

引用了 is_platform_signal().

被这些函数引用 is_platform_signal().

◆ is_running()

bool system_signal_manager::is_running ( ) const
nodiscard

检查是否正在运行

返回
正在运行返回true

引用了 is_running().

被这些函数引用 is_running().

◆ register_handler()

void system_signal_manager::register_handler ( event event,
signal_handler handler )

注册信号处理函数

参数
event信号事件
handler处理函数
异常
system_exceptionhandler为空时抛出

◆ register_handlers()

void system_signal_manager::register_handlers ( const vector< event > & events,
const signal_handler & handler )

批量注册信号处理函数

参数
events信号事件列表
handler处理函数

◆ remove_handler()

void system_signal_manager::remove_handler ( event event)

移除信号处理函数

参数
event信号事件

◆ reset_force()

void system_signal_manager::reset_force ( )

强制重置信号管理器状态

警告
生产环境中不应使用此方法。

引用了 reset_force().

被这些函数引用 reset_force().

◆ send_signal()

void system_signal_manager::send_signal ( event event,
void * context = nullptr )

发送信号

参数
event信号事件
context上下文数据(可选)

◆ set_force_exit_timeout()

void system_signal_manager::set_force_exit_timeout ( int timeout_ms)

设置强制退出超时时间

参数
timeout_ms超时时间(毫秒)

超过此时间未处理的信号将被丢弃。

◆ unblock_signals()

bool system_signal_manager::unblock_signals ( const vector< event > & signals_to_unblock) const

解除阻塞指定信号(仅Linux)

参数
signals_to_unblock要解除的信号集合
返回
是否成功

引用了 unblock_signals().

被这些函数引用 unblock_signals().

◆ wait_for_signal()

event system_signal_manager::wait_for_signal ( int timeout_ms = -1)

等待信号

参数
timeout_ms超时时间(毫秒),-1表示无限等待
返回
收到的信号事件

阻塞当前线程直到收到信号或超时。


该类的文档由以下文件生成: