2017-02-09 88 views
4

我是来自电子开始主后台进程(在Windows上),这样的事情:电子和Windows节点,杀死一个衍生的过程

app_exe = require("child_process").spawn(
    "app.exe" , 
    [ "--params", ... ], 
    { stdio: "ignore" } 
); 

这工作得很好,我可以从进程管理器看到这: enter image description here

,但我不能杀死(.on("closed")on("window-all-closed"))当电子被关闭的过程

我试图child.kill([signal]),也tree-killtaskkill,但没有结果:只有第一个进程(示例中的6036)被杀死,第二个进程(5760)仍旧不存在。

也exec taskkill /F /T /PID不会杀死它。

杀死的唯一方法是exec taskkill /F /IM app.exe /T,但这样我就不能运行电子应用程序的两个实例。

我错过了在Windows上的进程管理明显的东西?

+0

你能以某种方式获得子进程的PID吗?如果你可以做到这一点,你只需要调用'process.kill(PID)' – ChesuCR

回答

0

我有完全相同的问题,论坛上没有问题/答案可以解决这个问题。因此,一些研究后,我已经找到了一个简单的解决方法和IM共享它:

// Workaround to close all processes/sub-processes after closing the app 
electron.app.once('window-all-closed', electron.app.quit); 
electron.app.once('before-quit',() => { 
    window.removeAllListeners('close'); 
}); 

而且它对于我来说完美的工作,希望它为你做。