想一下创建&的管理员应用程序管理儿童应用程序。
我正在生成另一个child_process(使用childProcess.spawn('node', 'somefile.js')
)。而且,我能够在childProcess上设置事件监听器(例如,exit
),以便我可以记录输出和输出。会知道儿童app退出。
但是当管理员应用程序重新启动时,我想再次监听子进程上的事件,以便adminapp知道子应用程序崩溃了。
但是child_process
模块没有任何方法可以通过' pid '来获取childProcess实例。 (或其他一些机制)。
有人可以指点如何做到这一点吗?我们可以使用forever-monitor或pm2-api吗?
执行此操作更新: 代码I产生子进程:
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 :
我们可以连接到流程吗?例如,我在forever-monitor中看到了类似的代码。是否可以使用socket / nssocket?
https://github.com/foreverjs/forever/blob/master/lib/forever.js#L199 https://github.com/foreverjs/forever/blob/master/lib/forever.js#L229