こんにちは。
本日は、タイトルの内容。
Nodeのアプリケーションの終了を検知する方法です。
概要
処理がすべて終了した場合ではなく、
Ctrl + c でアプリケーションを終了する場合を
検知して処理を行う方法。
処理がすべて終了した場合や、例外発生による終了は
exitイベントを使用することで検知することができます。
ただ、exitイベントではCtrl + c による終了は検知できません。
Ctrl + c による終了はSIGINTシグナルを検知して対応します。
サンプルソース
以下のサンプルはCtrl + c による終了で発生する
SIGINTシグナルを検知し、exitイベントを発行します。
console.log('待機開始...'); setTimeout(() => console.log('待機終了.'), 5000); process.on('exit', () => { console.log('exitイベント検知!'); }); process.on('SIGINT', () => { console.log('Ctrl + c を検知!'); process.exit(0); });
何もせず処理が終了した場合の出力結果は以下になります。
待機開始... 待機終了. exitイベント検知!
Ctrl + c で処理を終了した場合の出力結果は以下になります。
待機開始... ^C Ctrl + c を検知! exitイベント検知!
以上です。