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 将不再退出)。这时候如果要关闭,需要在回调函数内部加上相应的关闭逻辑。
例子
|
|