我使用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?
答案 0 :(得分:7)
截至目前,阅读docume ntation并执行一些re search,似乎只有四种方式退出node.js:
process.exit()
,由process.on('exit')
process.on('UncaughtException')
通常会发生某人不理解来自uncaughtException的错误消息,并错误地认为它是"其他的"杀死了node.js。
答案 1 :(得分:0)
事实上。我只是想指出Node节点可以在没有执行处理程序的情况下作为信号的结果退出(如果没有注册)。重读你的帖子,我发现这也许就是你的意思。