gpt4 book ai didi

javascript - 在 Electron 应用程序中处理 NodeJS 的 child_process

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:06 24 4
gpt4 key购买 nike

所以我正在开发一个 Electron 应用程序,它应该在按下按钮时启动外部应用程序。它有效,但如果我关闭该应用程序并再次按下按钮,它将启动该过程的多个实例。代码如下:

ipcMain.on("run_crystal", () => {
var cp = require("child_process");
executablePath = crystal + "\\CrystalDM\\Server\\CrystalDMServer.exe";
var Server_child = cp.spawn(executablePath);
executablePath = crystal + "\\CrystalDM\\Game\\CrystalDM.exe";
var parameters = ["test"];
var options = {cwd:crystal+"\\CrystalDM\\Game"};
console.log("a intrat in start game si urmeaza sa ruleze " + executablePath)
var Game_child = cp.execFile(executablePath, parameters, options, (error, stdout, stderr) =>{
console.log(stdout)
Game_child.kill("SIGINT");
Server_child.kill("SIGINT");
delete Game_child;
delete Server_child;
delete cp;
});
});

最佳答案

这段代码可能会被多次调用,并且您忘记在完成操作后删除事件监听器。我不知道如何解决它,但试试这个:

ipcMain.once("run_crystal", () => {
[your code here]
});

或者:

ipcMain.on("run_crystal", () => {
[your code here]
ipcMain.removeAllListeners("run_crystal");
});

关于javascript - 在 Electron 应用程序中处理 NodeJS 的 child_process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com