ホームページ  >  記事  >  ウェブフロントエンド  >  NodeJS でプログラムの終了コードを取得する方法についての簡単な説明

NodeJS でプログラムの終了コードを取得する方法についての簡単な説明

青灯夜游
青灯夜游転載
2021-09-28 10:39:441750ブラウズ

NodeJS プログラムの終了コードを取得するにはどうすればよいですか?次の記事では、Node.js プログラムの終了コードと終了コードの列挙を取得する方法を紹介しますので、ご参考になれば幸いです。

NodeJS でプログラムの終了コードを取得する方法についての簡単な説明

実行中の NodeJS プログラムを終了するには、Ctrl C または process.exit() を使用して exit を実行します。 [推奨される調査: "nodejs チュートリアル "]

どちらの操作でも、プロセスを含む未完了の非同期操作がまだ保留中である場合でも、プロセスをできるだけ早く強制的に終了します。 .stdout および process.stderr の I/O 操作。

エラー状態により Node.js プロセスを終了する必要がある場合は、process.exit()## を呼び出すよりも、捕捉されないエラーをスローし、それに応じてプロセスを終了させる方が安全です。 # など:

import process from 'process';

// 如何正确设置退出码,同时让进程正常退出。
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exitCode = 1;
}

Worker スレッドでは、この関数は現在のプロセスではなく現在のスレッドを停止します。

では、予期せず終了する一部の NodeJS プログラムの exitCode を取得するにはどうすればよいでしょうか?それぞれの終了コードは何を意味しますか?今日はそれについて学びましょう。

NodeJS の child_process 子プロセスを通じて終了コードを取得する

child_process.fork() メソッドは child_process.spawn() の特殊なケースであり、新しい NodeJS プロセスを生成するために特別に使用されます。

const fork = require("child_process").fork;

console.log("main ", process.argv);

const fs = require("fs");

const fd = fs.openSync("./a.log", "a");

const child = fork("./index.js", {
    stdio: ["ipc", "pipe", fd]
});

child.on("error", (error) => {
    let info = `child process error ${error}`;
    fs.writeSync(fd, info);
    console.log(info);
});

child.on("exit", (code) => {
    let info = `child process exited with code ${code}`;
    fs.writeSync(fd, info);
    console.log(info);
});

サブルーチン実行パラメータ

const fork = require('child_process').fork;

console.log('main ',process.argv);

const fs=require('fs');

const fd = fs.openSync('./a.log','a');

// 子程序参数
let args = [];
args[0] = 'test';

const child = fork('./index.js',args,{
    stdio:['ipc','pipe',fd]
});

child.on('error', (error) => {
    let info = `child process error ${error}`;
    fs.writeSync(fd,info);
    console.log(info);
});

child.on('exit', (code) => {
    let info = `child process exited with code ${code}`;
    fs.writeSync(fd,info);
    console.log(info);
});

NodeJS終了コード

NodeJSは通常、終了保留中の非同期操作がなくなると、

0ステータスコードで終了します。それ以外の場合は、次のステータス コードを使用します。

  • 1 Uncaught Fatal Exception: キャッチされない例外が存在し、ドメインまたは # # によってカバーされていません。 #'uncaughtException' イベント ハンドラーの処理。
  • 2
  • : 未使用 (組み込みの悪用のために Bash によって予約されています)
  • 3
  • 内部 JavaScript 解析エラー: 内部NodeJS ブートストラップ中の JavaScript ソース コードにより解析エラーが発生します。これは非常にまれで、通常は NodeJS 自体の開発中にのみ発生します。
  • 4
  • 内部 JavaScript 評価に失敗しました: NodeJS ブートストラップ中の内部 JavaScript ソース コードは、評価時に関数値を返すことができませんでした。これは非常にまれで、通常は NodeJS 自体の開発中にのみ発生します。
  • 5
  • 致命的エラー: V8 には回復不可能な致命的エラーが存在します。通常、FATAL ERROR というプレフィックスが付いたメッセージが標準エラーに出力されます。
  • 6
  • 非関数の内部例外ハンドラー: キャッチされない例外がありますが、内部の致命的な例外ハンドラーが何らかの理由で非関数に設定されているため、処理できません。と呼ばれた。
  • 7
  • 内部例外ハンドラーの実行時エラー : 捕捉されなかった例外が存在し、それを処理しようとしたときに内部致命的例外ハンドラー関数自体がエラーをスローしました。これは、たとえば、'uncaughtException' または domain.on('error') ハンドルがエラーをスローした場合に発生します。
  • 8
  • : 使用されません。 NodeJS の以前のバージョンでは、終了コード 8 がキャッチされない例外を示す場合がありました。
  • 9
  • 無効なパラメータ: 不明なオプションが指定されたか、値が必要なオプションが値なしで指定されました。
  • 10
  • 内部 JavaScript ランタイム エラー : NodeJS ブートストラップ中の内部 JavaScript ソース コードは、ブートストラップ関数の呼び出し時にエラーをスローします。これは非常にまれで、通常は NodeJS 自体の開発中にのみ発生します。
  • 12
  • 無効なデバッグ パラメータ: --inspect および/または --inspect-brk オプションが設定されています。しかし、選択されたポート番号は無効であるか、使用できません。
  • 13
  • 未完了のトップレベル await: await はトップレベル コードの関数の外で使用されていますが、Promise は渡されましたで 解決されませんでした。
  • >128
  • シグナル終了: NodeJS が SIGKILLSIGHUP などの致命的なシグナルを受信した場合、終了コードは 128 に信号コードの値を加えたものになります。終了コードは 7 ビット整数として定義され、信号出口には上位ビットが設定されてから信号コードの値が含まれるため、これは標準的な POSIX の慣例です。たとえば、信号 SIGABRT の値は 6 であるため、予期される終了コードは 128 6 または 134# になります。 ## 。 概要
以上がNodeJSプログラムの終了コードと終了コード列挙を取得する方法です。

~この記事は終わりです、読んでいただきありがとうございました!

プログラミング関連の知識について詳しくは、

プログラミング ビデオ

をご覧ください。 !

以上がNodeJS でプログラムの終了コードを取得する方法についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。