node.js - Electron - 在 Linux 中检测和处理 SIGINT/SIGTERM 信号
问题描述
您可以监听 SIGINT/SIGTERM 并在用户在节点 js 中使用 CTRL-C 按下终端(如果它是从一个终端启动)时停止您的应用程序退出process.on
,但这在我的电子应用程序中不起作用。我还尝试将处理程序绑定到对象的“退出”、“退出前”和“将退出”事件,app
但无济于事。是否可以检测用户是否从终端打开应用程序并在电子应用程序中按下 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。
解决方案
您太早地注册了事件侦听器。我修改了您的代码以在之后的块中包含所有侦听器,whenReady
并获得了您期望的结果。
推荐阅读
- android-studio - 在 Android Studio 中不断添加资产时始终显示“索引”警报
- javascript - 单击注销按钮后页面再次重新加载
- huggingface-transformers - 如何从 HuggingFace Longformer 中提取文档嵌入
- xpages - Domino 11 和验证码
- android - Android AOP 库
- ios - Tabman 可调整大小的导航栏
- python - 如何将 tkinter 文本小部件的插入光标移动到某个索引
- json - 使用 presto 创建嵌套表?
- rust - 如何迭代 Bevy 查询并保留对迭代值的引用,以便我以后可以使用它?
- azure - 如何在 Microsoft 应用代理中配置范围