问题标签 [atexit]

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 投票
1 回答
1537 浏览

python - Flask 和 Web.py 都挂在 atexit

我有这个简单的 Flask 应用程序:

prolog_handler 模块使用三元存储启动会话并加载一些规则。它还有一个 atexit 函数,可以结束会话并打印类似“Closing...”的消息。我从 bash 提示符启动服务器python myapp.py。每当我按 CTRL-C 停止服务器时,什么都没有发生。我没有返回到 bash 提示符,也没有看到打印的“正在关闭...”消息。我也尝试使用 Web.py 来执行此操作,结果相同。

prolog_handler 所做的实际上就像这样简单:

那么为什么只执行一个 atexit 任务这么困难呢?

PS:如果我注释掉有关打开 Prolog 会话并结束它的所有内容,只留下打印消息“Closing ...”的部分,那么当我按下 CTRL- 时,我确实看到了“Closing ...”消息C 和我确实返回到 bash 提示符。这按预期工作。但是,如果我不能用它做任何有用的事情,那么 atexit 有什么意义呢?

0 投票
3 回答
7188 浏览

c - 在父进程退出时杀死子进程

我对 c 和编程非常陌生,需要一些帮助。在 linux(cygwin) 上的 c 中,我需要在退出时删除所有子进程。我已经查看了其他类似的问题,但无法使其正常工作。我试过了-

出于某种原因,“作品”甚至不会打印出来。我按 ctrl + c 退出。

我也试过-

但是因为我使用的是cygwin,当我使用cygwin时#include <sys/prctl.h>,cygwin说它找不到文件或目录,我不知道要为它安装什么包。另外,如果我的prctl()功能起作用,那会杀死所有的僵尸吗?

我的程序是一个客户端服务器,我的服务器 forks() 来处理每个客户端。我想当服务器关闭时不会留下任何剩余的僵尸。

0 投票
1 回答
3095 浏览

c++ - 何时调用 atexit() 注册的函数

我想知道注册的函数atexit()是在全局变量被销毁之前还是之后被调用的。这是由定义的标准或实现指定的吗?

0 投票
3 回答
1528 浏览

python - 最终与 atexit

我最终不得不编写并支持具有以下高级结构的短 python 包装脚本:

请注意,我在except块中所做的只是将异常重新引发给脚本调用者,而不是装点门面;在我的特定情况下,这不是问题。这里的想法是清理代码应该始终通过finally块执行,无论是否异常。

我最好atexit为此目的使用处理程序吗?我可以不用try.

0 投票
2 回答
1166 浏览

php - 退出 php 命令而不触发关机功能

如何退出 php 脚本(例如使用 exit() 函数)但不触发所有先前注册的关闭函数(使用 register_shutdown_function)?

谢谢!

编辑:或者,有没有办法从所有注册的关闭功能中清除?

0 投票
3 回答
2679 浏览

python - 为什么 atexit 不在 python 中注册?

我在 Tkinter 中有一个循环:

atexit 失败。但是当我尝试打印寄存器时它没有问题。当我将 save_f 放入 Tkinter 循环时,它起作用了,但 atexit 没有。那么有人可以告诉我我做错了什么吗?

附言

抱歉,第一次忘记写 atexit 了。但它在我的代码中。

编辑:原始代码在这里

0 投票
2 回答
307 浏览

python - Atexit 函数在程序启动时执行

我有这个简单的程序:

问题是save_f一旦我运行我的程序就会被调用。这不是我的全部代码,只是重要的部分。如果这里没有问题,请告诉我,以便我知道该怎么做。

0 投票
1 回答
4828 浏览

c++ - C++ 中全局对象销毁和 atexit 之间的顺序

atexit我想知道在销毁全局对象和在 C++中可以确定顺序

我有一个全局对象和注册atexit函数,如下所示:

我发现onExit()之前MyClass::~MyClass()在 Visual Studio 2012 和 gcc4.7.2 中调用过。我确定onExit总是在全局对象(如g_class)销毁之前调用它吗?

我想知道全局对象注册顺序和atexit注册顺序使用相同的顺序表。还是全局对象顺序和顺序之间没有关系atexit

编辑:对不起,我写错了。我在整理示例代码时很困惑。onExit()在 ~MyClass() 之前调用。

0 投票
2 回答
8236 浏览

python - 在 Python 中使用 atexit 注册实例方法有什么影响?

假设我有一些非常大的 Python 类,可能会消耗大量内存。该类有一些方法负责在解释器退出时清理一些东西,并在 atexit 模块中注册:

这个类的各种实例可能会在程序的整个生命周期中来来去去。我的问题是:

如果我说,del我对实例的所有其他引用,使用 atexit 注册实例方法是否安全?换句话说,是否atexit.register()以与传统绑定相同的方式增加引用计数器?如果是这样,整个类实例现在是否必须在内存中徘徊并等到退出,因为它的方法之一已向 atexit 注册,或者实例的一部分是否可以被垃圾收集?对于像这样的瞬态类实例,在退出时构建这种清理的首选方法是什么,以便可以有效地进行垃圾收集?

0 投票
1 回答
1833 浏览

.net - .NET 代码在正常进程退出时执行?

C里面有atexit函数,它

atexit() 函数注册要在正常进程终止时调用的给定函数,通过 exit(3) 或通过从程序的 main() 返回。

Python 也有类似的能力。

.NET 是否提供了在正常进程终止时调用代码的方法?我知道有一些类似DomainUnloadand的东西ProcessExit,但至少据我所知,这些是不可靠的——要么要求应用程序是 Windows 窗体(或 WPF 应用程序),要么是其他东西。我正在为 .dll 编写代码,所以我不能依赖诸如弄乱主程序功能之类的东西 - 将其包装在 try/catch 中。

我的最终目标是执行一些文件清理(即刷新缓冲区并关闭)。如果我可以调用一些非托管代码,例如 win32api 挂钩或其他东西,我完全可以接受。