微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 node 中的 process.exit 之后启动另一个进程

如何解决如何在 node 中的 process.exit 之后启动另一个进程

我想在另一个进程退出后运行一个进程。

例如,如果我正在运行一个节点 JS 文件并且我点击了 CTRL + C,它应该关闭当前文件并从另一个 JS 文件运行另一个进程

类似的东西(伪代码):

process.on('exit',() => {
     console.log("exiting")
}).then( //I am conscIoUs it's wrong to put like that

//open another js file and run this process

);


解决方法

不,这是不可能的,因为 process 是一个代表当前 Node.js 进程的全局对象(阅读更多关于它的信息 in the official docs)。当该进程退出时,您的脚本就结束了,因此在此之后无法执行任何操作。

但是,您可以从调用 Node.js 脚本的地方运行一些东西,因为在您的脚本退出后调用者可能仍在运行。这可能是一个 bash 脚本、另一个 Node.js 进程或其他东西。

或者,您可以在 process.on('exit',() => {...}) 的回调中生成一个新的独立进程,如下面的代码片段所示(阅读有关 in the official docs 的更多信息):

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

process.on('exit',() => {
   const child = spawn('node',['some_other_script.js'],{
      detached: true,stdio: 'ignore'
   });

   child.unref();
});

严格来说,这不是进程退出“之后”——而是在父进程退出之前。不过,我认为这对您的示例没有任何影响。

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