问题标签 [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 回答
455 浏览

c - atexit() 注册了多少个函数?

我们遇到了一个问题,即 3rd 方库使用atexit(). 有什么方法可以知道注册了多少(或哪些)功能?

在这里检查过,但它说没有。

我试图和它相处ATEXIT_MAXsysconf但结果却是一个巨大的数字2^31-1

有什么办法让它工作吗?

0 投票
1 回答
194 浏览

c - 当我从 atexit 处理程序调用 exit 时,为什么我没有得到无限循环?

这个程序注册了一个函数调用exit()atexit()

man atexit

这些回调不能调用 exit()

我正在等待一个无限循环,但它只调用一次machiavellian()。发生什么了?

0 投票
1 回答
1803 浏览

ipython - 使用 Ipython 退出脚本时不调用 atexit 函数

下面是用脚本编写的代码 test_atexit.py

当我使用 python2.4 运行该函数时,将调用 exit_function

当我使用 ipython 运行相同的程序时,不会调用 exit_function

为什么在使用 Ipython 运行脚本时不调用 exit_function 以及如何让 ipython 调用 exit_function

0 投票
2 回答
1510 浏览

c++ - atexit() 使用独立 CLang 未定义

我正在尝试使用 CLang 使用以下命令行编译和链接一些 C++ 代码:

(我省略了输出、包含、定义等。这些都很好)

我遇到的问题是,在链接过程中,我得到了错误

我已经在这个问题上花费了相当长的时间,但我一生似乎无法弄清楚如何正确解决这个问题。

到目前为止,我的研究表明atexit是在stdlib.h中定义的,但是在这种情况下我不能使用标准库(这也不是我的决定,对于这个特定的项目来说是完全强制性的)。

据我所知,这个问题现在才出现,因为我们现在突然在我们的代码中有静态对象,这些对象是以这种方式编译的,这导致编译器尝试注册要为这些对象执行的 con/destructors,这需要调用__cxa_atexit(我们已禁用它,因为同样的原因它也给出了未定义的引用错误)或atexit

我也尝试在我的代码中定义一个任意的atexit函数,但显然链接器不想与此有任何关系(这对我来说似乎很奇怪)。

所以我的问题是:如何让链接器不抱怨atexit,而不必包含标准库?

提前致谢!

0 投票
3 回答
1032 浏览

c - 我们可以取消注册一个已经用 atexit() 注册的退出处理程序吗

是否可以注销退出处理函数???

0 投票
2 回答
1432 浏览

python - 在 atexit 处理程序之前清理 Python 记录器

我想使用 Python 的logging模块在代理启动和关闭时显示消息。atexit使用模块清理代理。但是,看起来记录器在代理之前被清理了。我怎样才能得到预期的行为?这是一个工作示例:

以及从 shell 运行脚本的输出:

INFO:root:Hello
Exception AttributeError: "'NoneType' object has no attribute 'info'"<bound method Program.__del__ of <__main__.Program object at 0x7f467c9aabd0>>被忽略

在不同版本和操作系统中具有相同的行为。

0 投票
3 回答
217 浏览

python - 为抽象函数指定退出函数

我需要一种从抽象方法调用函数的方法,即

我需要一种在执行之后自动调用method2class的方法(它应该在类端完成 - 独立于继承的类)。Amethod1A

有这样做的好方法吗?

0 投票
1 回答
4342 浏览

python - Python中信号处理程序和atexit处理程序的调用

我有一段 Python 代码如下:

实际代码远比这段代码复杂,但结构是相同的:即 main 函数保持一个无限循环。

我需要一个信号回调来释放占用的资源,比如数据库句柄。然后我添加一个SIGTERM处理程序,以防服务器被杀死,它只是调用释放函数然后退出进程。其atexit目的是成功完成处理过程。

现在我有一个问题,我只想release在进程被终止时调用一次。我的代码有什么改进吗?

0 投票
1 回答
1035 浏览

c++ - Strange crash with C++ atexit() function

I am using MSVC with Visual Studio 2013. This is the code I am compiling:

The way it is right now - it works like a charm. I start the program, it goes inside the crash function, pauses, I press a key and it closes normally. All cool. However, if I uncomment the while loop and use the X button on the console to close it, I get a crash inside the endl function. I was able to determine that the crash is caused by _Ostr.widen() This is the implementation of the endl function, provided by MSVC:

Using Ctrl+C to terminate the program causes the same effect. How can I fix this?

0 投票
1 回答
27364 浏览

c - 使用 calloc() 设置 char 数组,完成后也“释放”数组

我正在尝试设置一个字符串数组(在 C 中,使用 Linux)。该数组将包含 11 个字符串(静态长度)。我最初将数组设置为:

但在我的代码中,我有一部分调用 fgets(input,sizeof(input),stdin)。当这个 fgets() 部分被调用时,我的 Answers 数组的最后一个元素被输入的值覆盖(关于 Answers 在堆栈上的位置?)。所以现在我正试图“锁定”我用于 Answers 数组的内存。我会用

或者

循环运行它——

另外,完成后我需要使用 atexit() 来释放分配的内存......因为我无法在 atexit() 中传递参数,所以最好的方法是什么?

atexit(Free);

提前致谢!