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

如何获取 nodejs 程序退出码?下面本篇文章给大家介绍一下获取 node.js 程序退出码的方法以及退出码枚举,希望对大家有所帮助!

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

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

这两种操作都将强制进程尽快退出,即使仍有未完全完成的异步操作挂起,包括对 process.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 未捕获的致命异常:存在未捕获的异常,并且其没有被域或 ‘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 收到致命的信号,例如 SIGKILL 或 SIGHUP,则其退出码将是 128 加上信号代码的值。 这是标准的 POSIX 实践,因为退出码被定义为 7 位整数,并且信号退出设置高位,然后包含信号代码的值。 例如,信号 SIGABRT 的值是 6,因此预期的退出码将是 128 + 6 或 134。

总结

以上就是获取 NodeJS 程序退出码的方法以及退出码枚举。

~本文完,感谢阅读!

更多编程相关知识,请访问:node.js!!

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2707516.html

(0)
上一篇 2025年3月7日 20:13:00
下一篇 2025年3月2日 22:25:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 图文结合带你搞懂Nodejs中的事件循环

    本篇文章通过图文结合的形式来带大家搞懂nodejs中的事件循环,希望对大家有所帮助! 以下全文7000字,请在你思路清晰、精力充沛的时刻观看。保证你理解后很长时间忘不掉。【推荐学习:《nodejs》】 Node事件循环 Node底层使用的语…

    2025年3月7日 编程技术
    200
  • 怎么在Nodejs或者浏览器直接运行esm代码

    怎么在nodejs或者浏览器直接运行esm代码?下面本篇文章给大家介绍一下在nodejs或浏览器运行esm代码的方法,希望对大家有所帮助! CommonjsCommonJs 可以动态加载语句,代码发生在运行时CommonJs 导出值是拷贝,…

    2025年3月7日
    200
  • 深入浅析Node.js中创建子进程的方法

    本篇文章带大家了解一下node.js中的子进程,介绍一下node.js中创建子进程的四种方法,希望对大家有所帮助! 众所周知,Node.js 是单线程、异步非阻塞的程序语言,那如何充分利用多核 CPU 的优势呢?这就需要用到 child_p…

    2025年3月7日
    200
  • 趣味讲解Node.js中的回调函数(附示例)

    本篇文章给大家趣讲node.js的回调函数,通过示例带大家简单了解一下回调函数,希望对大家有所帮助! 趣讲Node.js的回调函数 Node.js异步编程的直接体现就是回调函数,回调函数在完成任务后会被调用,而Node.js使用了大量的回调…

    2025年3月7日
    200
  • 浅析Node.js+Winston库如何构建简单日志功能

    本篇文章给大家介绍一下node.js中使用winston库构建一个简单日志功能的方法,希望对大家有所帮助! Winston  是强大、灵活的 Node.js 开源日志库之一,理论上, Winston  是一个可以记录所有信息的记录器。这是一…

    2025年3月7日 编程技术
    200
  • 浅谈Nodejs中要怎么做定时任务

    本篇文章给大家介绍一下node定时任务的实现方法,希望对大家有所帮助! 目前我们遇到了这样一个需求,每个用户都可以自定义定时推送,定时任务的时间配置由用户自己配置,随时修改,而不是传统的由服务器设定好时间跑定时任务。【推荐学习:《node》…

    2025年3月7日
    200
  • windows怎么卸载nodejs

    windows卸载nodejs的方法:1、在桌面左下角单击【开始】按钮,然后选择【控制面板】;2、在控制面板窗口中找到【卸载程序】,单击打开;3、找到node.js并单击右键选择【卸载】即可。 本文操作环境:Windows7系统、nodej…

    2025年3月7日 编程技术
    200
  • 怎样删除nodejs

    删除nodejs的方法:1、从“控制面板”的“卸载程序”界面中卸载node程序;2、杀死所有与节点相关的进程;3、检查环境变量以确保没有引用Nodejs或npm存在即可。 本文操作环境:Windows7系统、nodejs10.16.2版、D…

    2025年3月7日
    200
  • 命令行怎么查看nodejs版本号

    命令行查看nodejs版本号的方法:1、使用“win+r”快捷键打开“运行”窗口,输入cmd命令,点击“确定”,打开“cmd命令行窗口”;2、在cmd命令行中,使用cd命令进入node安装目录 ,执行“node -v”命令,即可查看版本号。…

    2025年3月7日 编程技术
    200
  • 怎么用nodejs运行脚本

    运行方法:1、打开cmd命令窗口,执行“node”命令进入node编辑模式,输入js脚本代码,回车运行即可。2、将js脚本代码写入js文件中,在cmd命令窗口中执行“node js文件路径”即可。 本教程操作环境:windows7系统、no…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论