Node.js API (process) - exit によるプログラムの終了

プログラミング言語ではたいていプログラムの終了用に exit が用意されています。 Node.js でも Node.js API として exit があります。
今回は exit 関連の機能を紹介します。

プログラムの終了

終了ステータス

通常、 exit を使わなくても、 Node.js の起動時に指定したスクリプトの最後まで達すれば、プログラムは終了します。 このときの終了ステータス(exit code) は 0 です。

JavaScript のコードのエラーなどで Node.js がエラー終了した場合にはエラーの内容に対応した終了ステータスで終了します。 Node.js のエラーでなくとも、プログラムとして正常終了ではない場合は 0 以外の終了ステータスで終わるべきです。
exit は途中で終わるためだけでなく、適切な終了ステータスを設定するために exit は必要です。

実際に終了ステータスの値をどうするか というのはプログラム側で決める必要があります。 ただ、特に細かく決めたりしない場合は、正常終了でなければ 1 にしておけばいいと思います。
終了ステータスの仕様等について詳しく知りたい方は以下の記事の「終了ステータス」の節をみてください。

process.exit

Node.js の exit はグローバルオブジェクトである process のメソッドとして用意されています。
引数に渡した値を終了ステータスとしてプログラムを終了します。
process.exit(1);
引数を省略した場合のデフォルト値は 0 です。

終了イベント

exit 関連のイベントについて説明します。 イベントシステムの基本については以前の記事を見てください。

exit イベント

プログラムの終了前に呼ばれるイベントです。 リスナーの関数には終了ステータスが引数として渡されます。
process.on('exit',  (code)=> {
    console.log('Program exit. code = ', code);
});
基本的に終了状態のチェックなどに使うもので、 ここから非同期処理を実行して、終了を回避させるといったことはできません。
例えば、以下の例ではログは出力されません。
process.on('exit',  (code)=> {
    // 非同期は実行されない
    setImmediate(console.log, 'This will not run');
});

beforeExit イベント

beforeExit イベントはすべてのイベントループやスケジュールされた処理が終わり、終了される前に発生します。 こちらはリスナーの関数から非同期処理を実行することもできます。
ただ、スクリプトが最後までいって終了するときに発生するため、 process.exit で終了した場合にはこのイベントは発生しません。
process.once('beforeExit', () => {
    console.log("before exit");
});
なお、上記の例で once() を使っているのは on() ではリスナーが繰り返し呼ばれて、終了しなくなるためです。

サンプルコード

記事で使用したサンプルコードは以下のリンクから取得(名前をつけて保存)できます。 これを node コマンドの引数に渡して実行します。
$ node process_exit.js 
node コマンドの使い方について詳しくは以前の記事をご覧ください。

関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
39位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
4位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

04月 | 2017年05月 | 06月
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。