问题标签 [exit-handler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1282 浏览

c++ - 彻底关闭 ATL 应用程序

我已经开发了一个控制台 ATL 应用程序并且想要捕获关闭?、退出?、终止?事件,以便我可以关闭日志文件并在退出时执行一般清理。

如何捕获由于某人在任务管理器中结束 .exe 而导致的“终止”事件?

编辑:

这是一个控制台应用程序,我附加了主类。你能指出我应该在哪里以及如何使用SetConsoleCtrlHandler吗?

0 投票
1 回答
4652 浏览

events - Application.ApplicationExit 事件是否可以在非 Winforms 应用程序中通知退出?

当应用程序退出时,我们的代码库需要得到通知。所以我们订阅了 System.Window.Forms.Application.ApplicationExit 事件。这适用于 Winforms 应用程序,但它是否也适用于其他类型的应用程序,例如控制台应用程序、服务和 Web 应用程序(例如 ASP.NET)?命名空间会暗示它没有,并且它可能在Application.Exit()被调用(显式或隐式)时被引发,这对于这些其他情况可能不正确。

是否有其他事件在这些其他情况下会更好或更普遍(如果它也适用于 Winforms,那就太好了)?例如,是否有一个事件何时Environment.Exit()被调用(控制台应用程序)?

我在 System.Diagnostic.Process 中发现了一个 Exited 事件的提及,但这似乎是为了监视另一个进程的退出,并且它似乎没有被一个关于它自己的进程接收(例如,Process.GetCurrentProcess().Exited += Process_Exited; Process.GetCurrentProcess().EnableRaisingEvents = true;)。我认为它可能只有在进程实际退出后才会被提出,所以这是行不通的。

这尤其适用于 .NET 2.0 和 C#。

0 投票
2 回答
1204 浏览

.net - 如何为 F# 应用程序编写退出处理程序?

对象说明了一切。

如果我的应用程序被 ^C 终止,我希望运行一些代码。

0 投票
0 回答
2369 浏览

mysql - DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK 什么时候可以生效?

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK“应该”在事务之前使用,以明确设置失败时的值。

但是,文档指出这或多或少是默认行为?

如果发生了没有声明处理程序的条件,则采取的操作取决于条件类:

对于 SQLEXCEPTION 条件,存储程序在引发条件的语句处终止,就好像有一个 EXIT 处理程序一样。如果该程序被另一个存储的程序调用,则调用程序使用应用于其自己的处理程序的处理程序选择规则来处理该条件。

但这意味着COMMIT永远不会被调用,因此与没有处理程序的效果相同。

我不确定如何解释。听起来“显而易见”的事情是退出存储的程序,但是如果调用程序有处理程序告诉要否则 - 也许是DECLARE EXIT HANDLER FOR SQLEXCEPTION CONTINUE- 我不清楚内部存储的程序是否继续,或者“处理程序”是什么选择规则”是一般性的。

如果这种(对我来说很奇怪)解释是这种情况,那么这意味着如果假设一个存储程序可以假设它从未被另一个存储程序调用,则处理程序是无关的,但它确保了一致的行为

0 投票
1 回答
813 浏览

linux - 期望脚本中的退出处理程序不删除文件

我在编写期望脚本时遇到了一些问题。该脚本的目标是通过 SSH 连接到合作伙伴并获取网络配置信息。该信息保存在文件中并复制回本地主机进行处理。然后在退出时从远程主机中删除该文件。

在正常情况下,一切正常,正如我所料。但是,如果用户在 SCP 过程中按 ^C 来中断脚本,则文件不会从远程主机中删除。它留在那里。我不确定为什么会这样或如何强制将其删除。在这种情况下单步执行我的信号处理程序和退出处理程序时,似乎出于某种原因退出处理程序认为文件不存在并跳过 if 语句。不过,我不知道为什么。

我从下面的脚本中复制了退出处理程序和信号处理程序。如果您有任何想法或发现任何明显的错误,请告诉我。我不知道从这里去哪里。

更新: 我尝试了 Dinesh 建议的方法,但仍然有问题。我更新了退出处理程序代码如下:exit -onexit { exp_internal 1 unset expect_out(buffer)

}

我可以让它工作的唯一方法是注释掉我的信号处理程序以杀死产生的 PID。取消注释时,退出处理程序期望超时。

无论哪种方式,该文件仍未从远程系统中删除。这是我从 exp_internal 1 看到的:

更新 2:

我将退出处理程序更新为以下内容:

这是调试信息 - 仍然没有删除文件。

0 投票
0 回答
77 浏览

c# - 如何在退出处理程序中识别系统关闭或重启事件?

我有以下代码来识别进程是否已退出。当它退出时,我正在我的应用程序中创建一个通知。

如何确定此退出是否由 Windows 关闭或重新启动触发?因为如果是这样,我不应该通过我的应用程序创建通知吗?有没有办法确定此进程是否由于此类关闭或重新启动事件而退出?请指教。

0 投票
0 回答
343 浏览

python - 退出处理程序未激活:Python

出于某种原因,当我的程序关闭时,退出处理程序没有被激活。因此,我的程序没有按照. 为什么退出时不激活?enterexit_handleratexit.register(exit_handler)

蟒蛇代码:

命令提示符输入:

结果文件 (dicelog.txt) 内容:

我对 Python 比较陌生,所以请温柔一点。在此先感谢您的帮助。

0 投票
0 回答
44 浏览

javascript - 在浏览器环境中,如何检测到所有 JavaScript 代码都已终止?

出于测试目的,我想检测脚本的“结束”,即当没有函数不再运行并且队列中没有异步任务时。

在 Node.js 中,我可以简单地添加一个退出处理程序:

它将在我的实例终止do_stuff()之前触发。node

对于我知道的浏览器环境

do_stuff()但是只有当我重新加载网站内容并因此终止我的脚本的当前“实例”时才会触发。

我将如何process.on('exit', fn)在 ES6 中为浏览器实现?

0 投票
0 回答
24 浏览

sql - Teradata 中的 SQL 状态

这些SQL状态是什么意思:U0001、U0002、U0003、U0004?

我们如何在 Teradata 中使用这些状态声明退出处理程序?