Это порождает exe-файл Python:
Код: Выделить всё
const { spawn } = require("child_process");
const kill = require("tree-kill");
let pythonBackend;
function startBackend() {
pythonBackend = spawn("path/to/python_backend.exe");
pythonBackend.stdout.on("data", (data) => {
console.log(`stdout: ${data}`);
});
pythonBackend.stderr.on("data", (data) => {
console.error(`stderr: ${data}`);
});
pythonBackend.on("close", (code) => {
console.log(`child process exited with code ${code}`);
});
}
Код: Выделить всё
async function stopBackend() {
if (pythonBackend) {
if (process.platform === "win32") {
exec(`taskkill /PID ${pythonBackend.pid} /T /F`, (err) => {
if (err) {
console.error("Failed to kill process:", err);
} else {
console.log("Process killed");
}
});
} else {
kill(pythonBackend.pid, "SIGTERM", (err) => {
if (err) {
console.error("Failed to kill process:", err);
} else {
console.log("Python process and its children killed");
}
});
}
pythonBackend = null;
}
}
app.on("before-quit", stopBackend);
app.on("quit", stopBackend);
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
});
process.on("exit", stopBackend);
process.on("SIGINT", () => {
stopBackend();
process.exit(0);
});
Мой вопрос: есть ли надежный способ гарантировать, что exe-файл Python всегда будет завершаться при выходе из электронного приложения?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ectron-app