sig.js
process.on("exit", function(code){
process.stdout.write("it was: " + code);
});
setTimeout(function(){
console.log("times up");
}, 30000);
如果我再运行
nohup node sig.js &
让时钟耗尽,我得到了预期的nohup.out
文件
it was: 0
但如果我使用kill -SIGINT <process id>
,那么我会得到一个完全为空的nohup.out
文件。基于文档https://nodejs.org/api/process.html#process_event_exit我期待某事 ...我在这里缺少什么?
答案 0 :(得分:1)
来自链接的文档:
此事件仅在Node.js显式退出时发出 process.exit()或由事件循环引出隐式。
在发送SIGINT时触发exit事件之前,该进程被终止。
您需要显式侦听SIGINT事件:
process.on("SIGINT", function () {
//graceful shutdown
process.exit();
});
这将捕获SIGINT并执行正常关闭,这将强制它通过您的预期代码。