bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

NodeJS如何獲取程序退出碼

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

目前累計(jì)服務(wù)客戶上千余家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。成都創(chuàng)新互聯(lián)公司始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

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

這兩種操作都將強(qiáng)制進(jìn)程盡快退出,即使仍有未完全完成的異步操作掛起,包括對(duì) process.stdoutprocess.stderr 的 I/O 操作。

如果由于錯(cuò)誤情況需要終止 Node.js 進(jìn)程,則拋出未捕獲的錯(cuò)誤并允許進(jìn)程相應(yīng)地終止比調(diào)用 process.exit() 更安全,比如:

import process from 'process';

// 如何正確設(shè)置退出碼,同時(shí)讓進(jìn)程正常退出。
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exitCode = 1;
}

Worker 線程中,該函數(shù)停止當(dāng)前線程而不是當(dāng)前進(jìn)程。

那么對(duì)于一些意外退出的 NodeJS 程序,如何來獲取 exitCode ?每一個(gè)退出碼又代表什么?今天我們就來學(xué)習(xí)一下。

通過 NodeJS 的 child_process 子進(jìn)程獲取退出碼

child_process.fork() 方法是 child_process.spawn() 的特例,專門用于衍生新的 NodeJS 進(jìn)程。

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);
});

子程序執(zhí)行參數(shù)

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

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

const fs=require('fs');

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

// 子程序參數(shù)
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退出碼

當(dāng)沒有更多異步操作掛起時(shí),NodeJS 通常會(huì)以 0 狀態(tài)代碼退出。 在其他情況下使用以下狀態(tài)代碼:

  • 1 未捕獲的致命異常:存在未捕獲的異常,并且其沒有被域或 'uncaughtException' 事件句柄處理。

  • 2: 未使用(由 Bash 保留用于內(nèi)置誤用)

  • 3 內(nèi)部 JavaScript 解析錯(cuò)誤:NodeJS 引導(dǎo)過程中的內(nèi)部 JavaScript 源代碼導(dǎo)致解析錯(cuò)誤。 這是極其罕見的,通常只能在 NodeJS 本身的開發(fā)過程中發(fā)生。

  • 4 內(nèi)部 JavaScript 評(píng)估失敗:NodeJS 引導(dǎo)過程中的內(nèi)部 JavaScript 源代碼在評(píng)估時(shí)未能返回函數(shù)值。 這是極其罕見的,通常只能在 NodeJS 本身的開發(fā)過程中發(fā)生。

  • 5 致命錯(cuò)誤:V8 中存在不可恢復(fù)的致命錯(cuò)誤。 通常將打印帶有前綴 FATAL ERROR 的消息到標(biāo)準(zhǔn)錯(cuò)誤。

  • 6 非函數(shù)的內(nèi)部異常句柄:存在未捕獲的異常,但內(nèi)部致命異常句柄不知何故設(shè)置為非函數(shù),無(wú)法調(diào)用。

  • 7 內(nèi)部異常句柄運(yùn)行時(shí)失敗:存在未捕獲的異常,并且內(nèi)部致命異常句柄函數(shù)本身在嘗試處理時(shí)拋出錯(cuò)誤。 例如,如果 'uncaughtException'domain.on('error') 句柄拋出錯(cuò)誤,就會(huì)發(fā)生這種情況。

  • 8: 未使用。 在以前版本的 NodeJS 中,退出碼 8 有時(shí)表示未捕獲的異常。

  • 9 無(wú)效參數(shù):指定了未知選項(xiàng),或者提供了需要值的選項(xiàng)而沒有值。

  • 10 內(nèi)部 JavaScript 運(yùn)行時(shí)失敗:NodeJS 引導(dǎo)過程中的內(nèi)部 JavaScript 源代碼在調(diào)用引導(dǎo)函數(shù)時(shí)拋出錯(cuò)誤。 這是極其罕見的,通常只能在 NodeJS 本身的開發(fā)過程中發(fā)生。

  • 12 無(wú)效的調(diào)試參數(shù):設(shè)置了 --inspect 和/或 --inspect-brk 選項(xiàng),但選擇的端口號(hào)無(wú)效或不可用。

  • 13 未完成的頂層等待:在頂層代碼中的函數(shù)外使用了 await,但傳入的 Promise 從未解決。

  • >128 信號(hào)退出:如果 NodeJS 收到致命的信號(hào),例如 SIGKILLSIGHUP,則其退出碼將是 128 加上信號(hào)代碼的值。 這是標(biāo)準(zhǔn)的 POSIX 實(shí)踐,因?yàn)橥顺龃a被定義為 7 位整數(shù),并且信號(hào)退出設(shè)置高位,然后包含信號(hào)代碼的值。 例如,信號(hào) SIGABRT 的值是 6,因此預(yù)期的退出碼將是 128 + 6134

以上是“NodeJS如何獲取程序退出碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱:NodeJS如何獲取程序退出碼
本文路徑:http://vcdvsql.cn/article2/podoic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)服務(wù)器托管面包屑導(dǎo)航響應(yīng)式網(wǎng)站網(wǎng)站營(yíng)銷微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)