首页前端开发JavaScript浅谈NodeJS获取程序退出码的方法

浅谈NodeJS获取程序退出码的方法

时间2024-01-30 10:01:03发布访客分类JavaScript浏览742
导读:收集整理的这篇文章主要介绍了浅谈NodeJS获取程序退出码的方法,觉得挺不错的,现在分享给大家,也给大家做个参考。如何获取 NodeJS 程序退出码?下面本篇文章给大家介绍一下获取 Node.js 程序退出码的方法以及退出码枚举,希望对大家...
收集整理的这篇文章主要介绍了浅谈NodeJS获取程序退出码的方法,觉得挺不错的,现在分享给大家,也给大家做个参考。如何获取 NodeJS 程序退出码?下面本篇文章给大家介绍一下获取 Node.js 程序退出码的方法以及退出码枚举,希望对大家有所帮助!

想要退出正在运行的 NodeJS 程序,我们既可以通过 Ctrl + C 的方式,也可以通过 PRocess.exIT()来执行退出。【推荐学习:《nodejs 教程》】

这两种操作都将强制进程尽快退出,即使仍有未完全完成的异步操作挂起,包括对 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 程序退出码的方法以及退出码枚举。

~本文完,感谢阅读!

更多编程相关知识,请访问:编程视频!!

以上就是浅谈NodeJS获取程序退出码的方法的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: 浅析Angular中HttpClientModule模...下一篇:浅谈离线安装全局node模块的方法猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 浅谈NodeJS获取程序退出码的方法
本文地址: https://pptw.com/jishu/592373.html
深入浅析Angular中怎么使用动画 C#连接Oracle的实例教程

游客 回复需填写必要信息