Node.js处理和退出代码未显示

时间:2015-12-31 03:20:56

标签: javascript node.js signals

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我期待某事 ...我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

来自链接的文档:

  

此事件仅在Node.js显式退出时发出   process.exit()或由事件循环引出隐式。

在发送SIGINT时触发exit事件之前,该进程被终止。

您需要显式侦听SIGINT事件:

process.on("SIGINT", function () {
  //graceful shutdown
  process.exit();
});

这将捕获SIGINT并执行正常关闭,这将强制它通过您的预期代码。