电子和窗口上的节点,杀死一个衍生过程

rob*_*ing 8 windows node.js electron

我正在从电子主要开始一个后台进程(在windows上),如下所示:

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

这工作正常,我可以从流程资源管理器中看到: 在此输入图像描述

但是当电子关闭时我无法杀死这个过程(.on("closed")on("window-all-closed"))

我尝试了child.kill([signal]),但也没有结果的树杀死taskkill:只有第一个进程(示例中的6036)被杀死,第二个进程(5760)仍然是陈旧的.

exec taskkill /F /T /PID也不杀它.

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

我在Windows上的流程管理中遗漏了一些明显的东西?

You*_*sef 1

我遇到了完全相同的问题,论坛上的任何问题/答案都无法解决该问题。因此,经过一些研究,我找到了一个简单的解决方法并分享它:

// 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');
});
Run Code Online (Sandbox Code Playgroud)

它非常适合我,希望它也适合你。