NodeJS如何获取程序退出码

发布时间:2021-09-28 11:12:08 作者:小新
来源:亿速云 阅读:185

这篇文章主要介绍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 状态代码退出。 在其他情况下使用以下状态代码:

以上是“NodeJS如何获取程序退出码”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Android程序退出方法
  2. NodeJS express跨域获取数据

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nodejs

上一篇:如何解决asp.net模板引擎Razor中cacheName的问题

下一篇:如何解决XP系统注销的菜单里面没有用户切换按钮的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》