无法杀死子进程

时间:2019-12-23 12:41:41

标签: node.js child-process spawn

我创建了一个程序来启动,停止和更新应用程序。

所以我有一系列独立的子进程,这些子进程填充在启动另一个应用程序服务器的方法上:

let options = {
            "cwd": dir,
            "detached": true,
            "env": env
        };

this.apps[name] = child_process.spawn('node', [init], options);

“应用程序”保留每个启动的应用程序的“生成”返回的ChildProcess对象。初始化是每个应用程序的server.js文件。

我有一种方法可以列出显示pid和应用程序名称的应用程序:

const k = Object.keys(this.apps);
return k.map((k) => ({ pid: this.apps[k].pid, name: k }));

还有另一种方法可以停止(杀死)应用程序。

this.apps[name].stdin.pause();
this.apps[name].kill();

这个想法是,当应用程序停止时,该pid将不会显示...当启动该应用程序时,该pid将显示在列表中。我有一个侦听器,可在停止时清除数组中进程的pid:

app.on('close', (code, signal) => this.apps[name].pid = null );

但是,当我列出应用程序时,即使启动了应用程序,某些pid也没有显示...有时,当我停止应用程序时,它看起来似乎并没有停止...好像我没有完全获取ChildProcess对象。实际上,我不知道为什么会发生这种情况以及如何解决...

有人可以指明方向吗? 非常感谢你...

0 个答案:

没有答案