我的编程空间,编程开发者的网络收藏夹
学习永远不晚

NodeJS如何获取程序退出码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

NodeJS如何获取程序退出码

这篇文章主要介绍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如何获取程序退出码”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

NodeJS如何获取程序退出码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

git如何退出程序

Git是一个开源的分布式版本管理系统,用于跟踪文档的修改,并协助多个人在工作中协作。当您使用Git时,有时您需要退出Git程序。在本文中,我们将学习如何退出Git程序。Git是命令行程序,您可以通过终端或命令提示符运行它。在Git中,如果您
2023-10-22

javascript中如何退出程序

在JavaScript中退出程序,有多种方法。下面将介绍三种方法,供参考:1.使用return语句在JavaScript中使用return语句可以直接终止程序的运行,并返回相应的结果(如果有的话)。return语句可以在任何函数内使用,当程序执行到return语句时,程序直接退出函数。示例代码如下:```function doSomething() { // 执行一些代码
2023-05-21

如何获取未运行的 Docker 容器的退出代码

php小编小新为您介绍如何获取未运行的Docker容器的退出代码。在使用Docker时,有时我们需要查看容器在退出时的退出代码以便进行故障排查或调试。然而,当容器未运行时,我们无法直接使用`docker logs`命令来获取退出代码。在本文
如何获取未运行的 Docker 容器的退出代码
2024-02-13

python如何在程序退出前执行代码

这篇文章主要为大家展示了“python如何在程序退出前执行代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何在程序退出前执行代码”这篇文章吧。在程序退出前执行代码的技巧使用 at
2023-06-27

windows如何强制退出程序

在Windows系统中,你可以通过以下几种方法来强制退出程序:1. 使用任务管理器:按下Ctrl + Shift + Esc键组合打开任务管理器,选择要强制退出的程序,然后点击“结束任务”按钮。2. 使用任务栏:如果程序在任务栏中有图标,你
2023-09-11

nodejs获取微信小程序带参数二维码实现代码

nodejs获取微信小程序带参数二维码实现代码 由于项目需求,需要获取小程序页面的带有参数的二维码。好,那就看文档搞吧。 之前都是写前端,没有写过后台的东西,这次难得有机会组长让我试一试试用node来写,那就写吧。 1、首页获取token,
2022-06-04

小程序验证码倒计时如何获取

本篇内容介绍了“小程序验证码倒计时如何获取”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!.wxml

qt程序异常退出如何处理

在处理Qt程序异常退出时,可以使用以下方法:1. 异常处理:使用try-catch语句块来捕获和处理可能引发异常的代码。在catch块中可以输出错误信息,并进行相应的处理。```cpptry {// 可能引发异常的代码} catch (co
2023-08-18

python如何在程序退出之前执行代码的提示

小编给大家分享一下python如何在程序退出之前执行代码的提示,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在程序退出之前执行代码的提示使用内置模块atexit,
2023-06-27

Linux中exit函数如何优雅退出程序

在 Linux 系统中,当你想要优雅地退出程序时,可以使用 exit() 函数#include void exit(int status);status 参数表示程序的退出状态。通常情况下,程序成功执行完毕时,stat
Linux中exit函数如何优雅退出程序
2024-09-09

酒店小程序如何获取流量

这篇文章主要为大家展示了“酒店小程序如何获取流量”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“酒店小程序如何获取流量”这篇文章吧。在众多的小程序里,微信小程序无疑是酒店商家们建立小程序的第一选择
2023-06-27

微信小程序如何获取节点

小编给大家分享一下微信小程序如何获取节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!wx.createSelectorQuery()基础库 1.4.0 开始支持
2023-06-26

小程序如何获取图片宽高

这篇文章给大家分享的是有关小程序如何获取图片宽高的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  小程序如果不能获取图片宽高,那么图片设置宽高时,就有可能会出现图片变形,要想避免这种情况,除了图片等比例缩放,还可
2023-06-26

小程序如何获取用户信息

这篇文章主要为大家展示了小程序如何获取用户信息,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“小程序如何获取用户信息”这篇文章吧。获取用户信息,withCredentials 为 true 时需要先
2023-06-26

编程热搜

目录