【发布时间】:2021-06-25 13:50:00
【问题描述】:
当用户使用process.on 在节点 js 中按下 CTRL-C 时(如果它是从一个终端启动的),您可以监听 SIGINT/SIGTERM 并阻止您的应用退出,但在我的电子应用。我还尝试将处理程序绑定到app 对象的“quit”、“before-quit”和“will-quit”事件,但无济于事。是否可以检测用户是否从终端打开应用程序并在电子应用程序中按下 CTRL-C,并将处理程序绑定到它并阻止应用程序退出。如果是,那么您将如何实现这一目标?
以下是我在基本电子主进程中使用process.on 和app.on 的方式,以防我做错了什么(我的原始脚本包含很多与问题无关的代码,而我想要实现的目标并不也可以使用基本的电子快速入门应用程序):
const { app, BrowserWindow } = require("electron");
const path = require("path");
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, "preload.js"),
},
});
win.loadFile("index.html");
}
app.whenReady().then(() => {
createWindow();
app.on("activate", function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on("will-quit", (e) => {
console.log("App recieved request to quit");
e.preventDefault();
});
app.on("before-quit", (e) => {
console.log("App recieved request to quit");
e.preventDefault();
});
app.on("quit", (e) => {
console.log("App recieved request to quit");
e.preventDefault();
});
process.on("SIGINT SIGTERM", () => {
console.log("Detected SIGINT/SIGTERM");
});
process.on("SIGTERM", () => {
console.log("Detected SIGTERM");
});
这个问题只涉及 Linux。
【问题讨论】:
-
所有这些都应该工作,发布你的代码
-
编辑了问题
标签: node.js linux electron signals