2017-02-09 85 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'); 
}); 

而且它對於我來說完美的工作,希望它爲你做。