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

5
我希望在另一个进程退出后运行一个进程。
例如,如果我正在运行一个node 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

);


1个回答

5
不,这是不可能的,因为process是代表当前Node.js进程的全局对象(在官方文档中了解更多)。当该进程退出时,您的脚本也就结束了,所以在那之后做任何事情都是不可能的。
然而,您可以从调用Node.js脚本的位置运行某些东西,因为调用者可能在您的脚本退出后仍在运行。这可能是一个bash脚本、另一个Node.js进程或其他东西。
或者,您可以在process.on('exit', () => {...})的回调函数中生成一个新的独立进程,如下面的代码片段所示(在官方文档中了解更多)。
const spawn = require('child_process').spawn;

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

   child.unref();
});

严格来说,这并不是“进程”退出之后 - 而是在父进程退出之前。不过我认为在你的例子中这没有任何影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接