node 监听进程的退出
目录
node 主要有三种方式监听进程的退出,三种方式触发的场景各不相同。
process.on('exit',fn)
当 Node.js 进程由于以下任一原因即将退出时,则会触发 ’exit’ 事件:
- process.exit() 方法被显式调用
- Node.js 事件循环不再需要执行任何额外的工作
process.on('SIGINT',fn)
SIGINT 通常可以监听到 Ctrl + C 发送的终止信号。
这在 Mac 和 Window 上都支持。
加上 SIGINT 后,会删除 Ctrl + C 的默认行为(Node.js 将不再退出)。这时候如果要关闭,需要在回调函数内部加上相应的关闭逻辑。
|
|
process.on('SIGTERM',fn)
SIGTERM 可以监听到对该进程发出的终止信号,例如:
- 别的 node 进程的
process.kill(pid) - 父的 process 中的
subprocess.kill() - 在任务管理器中对该进程发送关闭信号 (例如在 Mac 的活动监视器中,退出一个进程)
Mac 和 Window 表现不一致,Mac 上能捕捉到这个信号,window 上捕捉不到。
加上 SIGTERM 监听器后,则其默认行为将被删除(Node.js 将不再退出)。这时候如果要关闭,需要在回调函数内部加上相应的关闭逻辑。
例子
|
|