检查应用程序是否在电子js中被强制关闭?

时间:2020-01-18 13:06:15

标签: javascript electron

我的问题是如何知道我的应用程序是从Windows中的任务管理器还是从Ubuntu(Linux)中的系统监视器关闭的?

我在关闭应用程序时从应用程序注销用户个人资料,但这仅在关闭事件时发生。当我尝试从任务管理器强制退出应用程序时,退出将无法工作

1 个答案:

答案 0 :(得分:0)

根据signal events上的nodejs文档,不可能有一个SIGKILL的侦听器,但是您可以为SIGTERM添加一个侦听器。以下是其他信号事件:

'SIGUSR1'被Node.js保留以启动调试器。可以安装侦听器,但这样做可能会干扰调试器。

'SIGTERM'和'SIGINT'在非Windows平台上具有默认处理程序,这些处理程序在退出代码128 +信号编号之前会重置终端模式。如果这些信号之一已安装侦听器,则将删除其默认行为(Node.js不再退出)。

'SIGPIPE'默认情况下被忽略。它可以安装一个侦听器。

当控制台窗口关闭时,在Windows上以及在各种类似条件下的其他平台上会生成“ SIGHUP”。参见signal(7)。它可以安装侦听器,但是大约10秒后Windows将无条件终止Node.js。在非Windows平台上,SIGHUP的默认行为是终止Node.js,但是一旦安装了侦听器,它将删除其默认行为。

在Windows上不支持'SIGTERM',可以在它上收听。

终端上的

'SIGINT'在所有平台上都受支持,并且通常可以用+ C生成(尽管这可以配置)。启用终端原始模式后,不会生成它。

在Windows上按+时会传递“ SIGBREAK”,在非Windows平台上可以收听,但无法发送或生成它。

调整了控制台的大小后,将交付“ SIGWINCH”。在Windows上,只有在移动光标或在原始模式下使用可读的tty时,才会在写入控制台时发生这种情况。

'SIGKILL'无法安装侦听器,它将无条件终止所有平台上的Node.js。

'SIGSTOP'无法安装侦听器。

'SIGBUS','SIGFPE','SIGSEGV'和'SIGILL'在未使用kill(2)人为提高时,会固有地使进程处于无法安全调用JS侦听器的状态。这样做可能导致进程陷入无限循环,因为使用process.on()附加的侦听器被异步调用,因此无法纠正根本问题。