中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NodeJS如何獲取程序退出碼

發布時間:2021-09-28 11:12:08 來源:億速云 閱讀:185 作者:小新 欄目:web開發

這篇文章主要介紹NodeJS如何獲取程序退出碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

想要退出正在運行的 NodeJS 程序,我們既可以通過 Ctrl + C  的方式,也可以通過 process.exit()來執行退出。

這兩種操作都將強制進程盡快退出,即使仍有未完全完成的異步操作掛起,包括對 process.stdoutprocess.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 未捕獲的致命異常:存在未捕獲的異常,并且其沒有被域或 '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,但傳入的 Promise 從未解決。

  • >128 信號退出:如果 NodeJS 收到致命的信號,例如 SIGKILLSIGHUP,則其退出碼將是 128 加上信號代碼的值。 這是標準的 POSIX 實踐,因為退出碼被定義為 7 位整數,并且信號退出設置高位,然后包含信號代碼的值。 例如,信號 SIGABRT 的值是 6,因此預期的退出碼將是 128 + 6134

以上是“NodeJS如何獲取程序退出碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴彦淖尔市| 海丰县| 仪陇县| 呼玛县| 镇平县| 阜南县| 云和县| 大连市| 宜兰县| 宜城市| 容城县| 岑溪市| 无锡市| 彭山县| 时尚| 汕尾市| 泽州县| 会东县| 长宁区| 陆川县| 洛隆县| 景泰县| 中方县| 金堂县| 五指山市| 山西省| 苗栗县| 西青区| 会宁县| 陇南市| 陕西省| 天柱县| 资源县| 盘山县| 康马县| 湟中县| 綦江县| 虹口区| 墨竹工卡县| 东至县| 达孜县|