Node.js 重新启动子进程

Node.js 重新启动子进程,node.js,Node.js,我有一个生成子进程的主进程。当终止子进程时,它将重新启动,但当它再次终止时,它将不会重新启动 test.js const fork = require('child_process').fork; const path = require('path'); const test = path.resolve('test2.js'); let test_child = fork(test); test_child.on("close", () => { console.log("c

我有一个生成子进程的主进程。当终止子进程时,它将重新启动,但当它再次终止时,它将不会重新启动

test.js

const fork = require('child_process').fork;
const path = require('path');
const test = path.resolve('test2.js');
let test_child = fork(test);

test_child.on("close", () => {
    console.log("child gone");
    setTimeout(() => {
        test_child = fork(test);
    }, 2500)
});
test2.js

setInterval(() => {
    console.log("test")
}, 250);

如果主进程(test.js)因某种原因崩溃或停止,我希望主进程(test2.js)能够持续启动。

如果可以检查子进程的状态,可以将其添加到setInterval函数中,检查它是否正在运行,如果没有,则再次调用它

const fork = require('child_process').fork;
const path = require('path');
const test = path.resolve('child.js');
function  repeat() {
let test_child = fork(test);

test_child.on("close", () => {
    console.log("child gone");
    setTimeout(() => {
      repeat();
    }, 25)
});
}

repeat();

您可以在main.js中尝试上面的代码,这就是test_child=fork(test);是在设置超时时间内进行的。它第一次工作,没有问题,但在第一次之后的任何时间,它都将结束主进程。问题是,setTimeout应该在25ms后只运行一次,而setInterval将在25msCan let test_child=fork(test)后重复该操作;不在功能范围之外吗?不要管得到它和工作。谢谢这样做:const fork=require('child_process')。fork;const path=require('path');const test=path.resolve('test2.js');让test_child函数repeat(){test_child=fork(test);test_child.on(“close”,()=>{console.log(“child gone”);setTimeout(()=>{repeat();},2500)}repeat();