我在使用REDIS數據存儲的應用程序上工作。爲了保持數據的完整性,我想清理過程關閉時的商店。我創建了一個函數處理函數並將其與process.on()綁定在一起來表示事件:uncaughtException,SIGINT,SIGTERM,SIGQUIT並且它工作正常(CTRL + C,進程查殺,異常,...)。當Node.js進程可以直接退出()而不觸發其他信號事件(uncaughtException,SIGINT,SIGTERM ...)
但我讀過,在某些情況下,過程可以直接退出而不觸發其他信號事件。
在該特定情況下的問題是,process.on(「退出」)處理程序只能處理同步任務。
我做了不同的測試,嘗試以不同的方式殺死進程。 (除了在Windows上使用SIGTERM)我無法確定process.on('exit')是否在沒有SIGINT,SIGTERM或其他事件觸發的情況下直接觸發的情況。
所以我的問題是(在Linux系統上),在什麼情況下進程可以直接退出而不會觸發此事件:http://nodejs.org/api/all.html#all_signal_events?
好的第一個問題,歡迎來到SO:),還有,你在哪裏閱讀過其他條件?這可能是一個很好的研究起點。 – DrakaSAN 2014-09-25 09:15:58
對此有何評論至少筆者說:https://github.com/Automattic/socket.io-redis/pull/15 _「我沒能正常後做正確的退出清理,所以**退出**,房間仍然充滿了相同的(現在unexisting)插槽標識。用Ctrl + C或按預期的方式終止信號應該工作退出。「_ 所以也許我可以直接問他什麼是」正常退出「的意思。 – damien 2014-09-25 11:33:23
這將是一個不錯的主意,我不看不到他怎麼可以「正常退出」沒有在這個過程中的事件之一...... – DrakaSAN 2014-09-25 12:37:01