なんだかGoodVibes

日々の勉強メモです。

【Node】Ctrl + c による終了を検知する

こんにちは。
本日は、タイトルの内容。
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イベント検知!



以上です。