4

考虑拥有一个创建和管理子应用程序的管理应用程序。

我正在产生另一个 child_process ( using childProcess.spawn('node', 'somefile.js'))。而且,我可以在 childProcess 上设置事件侦听器(例如,exit),以便我可以记录输出并在子应用程序退出时知道。

但是当管理应用程序重新启动时,我想再次监听子进程上的事件,以便管理应用程序知道子应用程序崩溃了。

但是child_process模块没有任何方法可以通过' pid '(或其他一些机制)获取 childProcess 实例。

有人可以指点如何做到这一点吗?我们可以使用forever-monitorpm2-api来做到这一点吗?

更新:我必须生成子进程的代码:

let userWorkProcess = childProcess.spawn('node', [ 'someapp.js' ],
    {
        detached: true, 
        stdio: [ 'ignore', logFile, logFile ], 
        cwd: __dirname + '/someapp'
    }
);
userWorkProcess.unref();
userWorkProcess.on('exit', function () {
    if (userWorkProcess.exitCode !== 0) {
        // child process exited with some error
    } else {
        // child process exited without any error
    }
});

更新#2

我们可以连接到流程吗?例如,我在永远监视器中看到了一些类似的代码。是否可以使用套接字/nssocket?

https://github.com/foreverjs/forever/blob/master/lib/forever.js#L199 https://github.com/foreverjs/forever/blob/master/lib/forever.js#L229

4

0 回答 0