我使用REDIS数据存储处理应用程序.为了保持数据完整性,我想在进程关闭时清理存储.
我创建了一个函数处理程序并将其绑定(使用process.on())来发出信号事件:uncaughtException,SIGINT,SIGTERM,SIGQUIT,它运行良好(CTRL + C,进程终止,异常......).
但我已经读过,在某些情况下,该过程可以直接退出而不会触发其他信号事件.
在这种特殊情况下的问题是process.on('exit')处理程序只能处理同步任务.
我做了不同的测试,试图以不同的方式杀死这个过程.并且(除了在Windows上使用SIGTERM)我无法确定在没有SIGINT,SIGTERM或其他事件触发的情况下直接触发process.on('exit')的情况.
所以我的问题是(在Linux系统上),在什么条件下进程可以直接退出而不会触发此事件:http://nodejs.org/api/all.html#all_signal_events?
截至目前,读DOCUME ntation,做一些重新搜索,似乎只有四向使Node.js应用程序退出:
process.exit()
,由...处理 process.on('exit')
接收*nix信号,可由process.on('signal_name')`处理
有一个异常返回到事件循环,由.处理 process.on('UncaughtException')
计算机被插入,销毁,node.js二进制文件爆炸,或者SIGKILL/kill -9,并且没有处理.
通常会发生某人不理解来自uncaughtException的错误消息,并错误地认为它是杀死node.js的"其他东西".