当Node.js进程可以直接exit()而不触发其他信号事件(uncaughtException,SIGINT,SIGTERM ......)

时间:2014-09-25 09:08:35

标签: node.js exit

我使用REDIS数据存储处理应用程序。为了保持数据完整性,我想在进程关闭时清理存储。

我创建了一个函数处理程序并将其绑定(使用process.on())来发出信号事件:uncaughtException,SIGINT,SIGTERM,SIGQUIT,它运行良好(CTRL + C,进程终止,异常......)。 / p>

但我已经读过,在某些条件下,该过程可以直接退出而不会触发其他信号事件。

在这种特殊情况下的问题是process.on('exit')处理程序只能处理同步任务。

我做了不同的测试,试图以不同的方式杀死这个过程。 并且(在Windows上使用SIGTERM除外)我无法确定在没有SIGINT,SIGTERM或其他事件触发的情况下直接触发process.on('exit')的情况。

所以我的问题是(在Linux系统上),在什么条件下,进程可以直接退出而不会触发此事件:http://nodejs.org/api/all.html#all_signal_events

2 个答案:

答案 0 :(得分:7)

截至目前,阅读docume ntation并执行一些re search,似乎只有四种方式退出node.js:

通常会发生某人不理解来自uncaughtException的错误消息,并错误地认为它是"其他的"杀死了node.js。

答案 1 :(得分:0)

事实上。我只是想指出Node节点可以在没有执行处理程序的情况下作为信号的结果退出(如果没有注册)。重读你的帖子,我发现这也许就是你的意思。