当我在nodejs中具有自定义process.on('exit')时,端口未释放
当我通常使用Ctrl + c(mac)停止节点进程时,该进程将被杀死并释放端口。当我使用process.on('SIGINT')时,该进程不会自动终止,我必须在端口中手动终止该进程。为什么会这样?我会覆盖执行中的任何默认退出代码段吗?
process.on('SIGINT', (code) => {
console.log(`About to exit with code: ${code}`);
});
回答如下:按照Node's documentation:
'SIGTERM'
和'SIGINT'
在非Windows平台上具有默认处理程序,它们在退出代码128 + signal number
之前会重置终端模式。 如果这些信号之一已安装侦听器,则将删除其默认行为(Node.js将不再退出。)>所以是的,您正在覆盖默认行为。如果-当-处理完信号后,可以在
process.exit()
上的可能侦听器运行之后,调用'exit'
实际终止程序。