信号事件

当进程接收到信号时触发。标准的 POSIX 信号名称(如,SIGINTSIGHUP 等)列表详见(sigaction(2))。

监听 SIGINT 的例子:

  1. // Start reading from stdin so we don't exit.
  2. process.stdin.resume();
  3. process.on('SIGINT', () => {
  4. console.log('Got SIGINT. Press Control-D to exit.');
  5. });

发送 SIGINT 信号最简单的方式是在大多数终端程序中使用 Control-C

注意:

SIGUSR1 由 Node.js 保留,用以开启调试器。它也可以设置一个监听器但不会中断调试器的启动。

SIGTERMSIGINT 是非 Windows 平台上在以代码 128 + signal number 退出前重置终端模式的默认处理信号。如果监听到其中一个信号被设置,它默认的行为都会被移除(Node.js 将不复存在)。

SIGPIPE 默认被忽略。它可以设置监听器。

SIGHUP 在 Windows 上,是在控制台窗口关闭时产生,在其他平台上也是在各种类似的条件下产生(详见,signal(7))。它可以设置监听器,然而 Node.js 约10秒后会被 Windows 无条件终止。在非 Windows 平台上,SIGHUP 的默认行为是终止 Node.js ,但一旦设置了监听器,它的默认行为会被移除。

SIGTERM 在 Windows 是不被支持,它可以被监听的。

SIGINT 在所有平台的终端上都支持,并且通常是由 CTRL+C(虽然这也许配置的)产生的。当启用了终端原始模式时,它不再产生。

SIGBREAK 在 Windows 平台上,当按下 CTRL+BREAK 时发出,在非 Windows 平台上,它是可以被设置的,但没有办法发送或生成它。

SIGWINCH 在控制台已经调整后发出。在 Windows 中,当光标被移动时,或者当一个可读的 tty 在原始模式下使用时,这仅会在写入到控制台时发生。

SIGKILL 不能设置监听器,它在所有平台上的 Node.js 中会无条件终止。

SIGSTOP 不能设置监听器。

请注意,Windows 不支持发送信号,但 Node.js 提供了一些仿真方法 process.kill()child_process.kill() 。发送信号 0 可用于测试一个进程是否存在。发送 SIGINTSIGTERMSIGKILL 会导致目标进程无条件终止。