uv_signal_t
--- 信号句柄¶
信号句柄在按事件循环的基础上实现了Unix风格的信号处理。
在Windows上模拟了一些信号的接收:
- SIGINT 通常在用户按 CTRL+C 时被发送。 然而,如同在Unix上,当终端原始模式开启时这无法保证。
- SIGBREAK 在用户按 CTRL + BREAK 时被发送。
- SIGHUP 在用户关闭终端窗口时被生成。 在SIGHUP时给予程序大约10秒执行清理。 在那之后Windows将会无条件地终止程序。
- 对其他类型的信号的监视器能被成功地创建,但是这些信号永远不会被接收到。 这些信号是: SIGILL 、 SIGABRT 、 SIGFPE 、 SIGSEGV 、 SIGTERM 和 SIGKILL 。
- 通过编程方式调用 raise() 或 abort() 发出一个信号不会被libuv检测到; 这些信号将不会触发信号监视器。
注解
在Linux上 SIGRT0 和 SIGRT1 (信号32和33)用于NPTL线程库来管理线程。 对这些信号安装监视器将会导致无法预测的行为并且强烈不推荐。 libuv未来的版本中可能会直接拒绝它们。
在 1.15.0 版更改: 在Windows上改进对 SIGWINCH 的支持。
数据类型¶
-
uv_signal_t
¶ 信号句柄类型。
-
void
(*uv_signal_cb)
(uv_signal_t* handle, int signum)¶ 传递给
uv_signal_start()
的回调函数的类型定义。
API¶
-
int
uv_signal_init
(uv_loop_t* loop, uv_signal_t* signal)¶ 初始化句柄。
-
int
uv_signal_start
(uv_signal_t* signal, uv_signal_cb cb, int signum)¶ 以给定的回调函数开始句柄,监视给定的信号。
-
int
uv_signal_start_oneshot
(uv_signal_t* signal, uv_signal_cb cb, int signum)¶ 1.12.0 新版功能.
与
uv_signal_start()
同样的功能,但是信号句柄在接受到信号的时刻被重置。
-
int
uv_signal_stop
(uv_signal_t* signal)¶ 停止句柄,回调函数将不会再被调用。
参见
uv_handle_t
的API函数也适用。