SIGTERM回调未触发?Node.js Windows环境问题咨询
问题原因及解决办法
你的问题出在Windows系统对POSIX信号的支持限制上:
Node.js里的SIGTERM是类Unix系统的标准终止信号,但Windows原生并不支持这个信号。当你在Windows上调用process.kill(process.pid, 'SIGTERM')时,Node.js会直接终止当前进程,根本不会触发你注册的SIGTERM信号处理函数,所以控制台没有输出。
可行的解决方式
- 改用Windows支持的信号,比如
SIGBREAK或者SIGINT,示例代码:
process.on('SIGBREAK', () => { console.log('Got SIGBREAK signal.') process.exit() // 手动退出进程 }) process.kill(process.pid, 'SIGBREAK')
- 如果需要模拟类似SIGTERM的优雅退出逻辑,可以自定义事件来实现:
process.on('customExit', () => { console.log('Performing graceful exit...') // 这里写清理逻辑 process.exit() }) // 触发自定义事件 process.emit('customExit')
内容的提问来源于stack exchange,提问作者Noob
相关产品推荐
相关产品推荐

