考虑拥有一个创建和管理子应用程序的管理应用程序。
我正在产生另一个 child_process ( using childProcess.spawn('node', 'somefile.js')
)。而且,我可以在 childProcess 上设置事件侦听器(例如,exit
),以便我可以记录输出并在子应用程序退出时知道。
但是当管理应用程序重新启动时,我想再次监听子进程上的事件,以便管理应用程序知道子应用程序崩溃了。
但是child_process
模块没有任何方法可以通过' pid '(或其他一些机制)获取 childProcess 实例。
有人可以指点如何做到这一点吗?我们可以使用forever-monitor或pm2-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