atexit相关内容

POSIX标准对atExit()处理程序中的线程堆栈有什么规定?操作系统的做法是什么?

当我们的UNIX/C程序需要紧急退出时,我们使用exit(3)函数并安装atexit(3)处理程序进行紧急清理。这种方法工作得很好,直到我们的应用程序被线程化,在这一点上,exit()处理程序停止工作,这是可以预见的。 我们通过试验了解到一个错误,即线程可能已经死在atexit()处理程序中,并且它们的堆栈已被释放。 我在用atexit()链接线程消失的标准中找不到引号:线程在从mai ..
发布时间:2022-03-24 19:44:06 服务器开发

使用calloc()设置char数组,还可以“释放"代码.完成后的数组

我正在尝试建立一个字符串数组(使用Linux在C语言中).该数组将容纳11个字符串(静态长度).我最初将数组设置为: char答案[10] [100]; 但是在我的代码中,我有一部分调用了fgets(input,sizeof(input),stdin).当调用此fgets()部分时,我的Answers数组的最后一个元素被input的值覆盖(关于Answers在堆栈中的位置吗?).因此,现在 ..
发布时间:2021-04-09 20:51:37 其他开发

Python多处理atexit错误"atexit._run_exitfuncs错误";

我正在尝试在Python中运行一个简单的多进程应用程序.主线程产生1到N个进程,并等待直到它们全部完成处理为止.每个进程都运行一个无限循环,因此它们有可能永远运行而不会受到用户的干扰,因此我放入了一些代码来处理KeyboardInterrupt: #!/usr/bin/env python import sys import time from multiprocessing import ..
发布时间:2020-11-30 04:16:32 Python

atexit是否有害?

在诸如图书馆之类的大型项目中使用 atexit 有内在的危险吗? 如果是的话,那是什么?是关于 atexit 背后的技术性质的,它可能导致大型项目出现问题? 解决方案 我避免在库中使用 atexit 的主要原因是对它的任何使用都涉及全局状态。一个好的图书馆应该避免具有全局状态。 但是,还有其他技术原因: 实现仅需支持少量(我认为是32个) atexit 处理程序。之后,可 ..
发布时间:2020-09-28 04:14:49 其他开发

当python进程被杀死时运行atexit()

我有一个在后台运行的python进程,我希望它仅在脚本终止时才生成一些输出. def handle_exit(): print('\nAll files saved in ' + directory) generate_output() atexit.register(handle_exit) 调用引发KeyboardInterupt异常,然后sys.exit()正确调 ..
发布时间:2020-09-18 05:01:14 Python

注册功能以在Rust程序意外退出期间运行的最佳方法是什么?

我正在Rust中创建一个终端文本编辑器.编辑器将终端置于原始模式,禁用字符回显等功能,然后在退出时恢复原始终端功能. 但是,编辑器存在一些错误,并且由于无符号变量下溢等问题而一次又一次地意外崩溃.发生这种情况时,将终端恢复到原始状态的清理代码将永远不会运行. 我要运行的清理功能如下: fn restore_orig_mode(editor_config: &EditorConfi ..
发布时间:2020-07-05 04:02:07 其他开发

ruby at_exit退出状态

我可以确定at_exit块中的进程退出状态吗? at_exit do if this_process_status.success? print 'Success' else print 'Failure' end end 解决方案 使用 tadman 的想法 at_exit do if $!.nil? || $!.is_a?(SystemExit) ..
发布时间:2020-07-05 03:56:12 其他开发

python 2.6.x theading/signal/atexit在某些版本上失败?

我已经看到很多与此相关的问题...但是我的代码在 2.6.2上工作,而 在python 2.6.5上工作却失败.我是否认为整个atexit“当程序被信号杀死时不调用通过此模块注册的功能"是不对的,因为我捕获了信号然后干净地退出了,所以在这里不应该算数吗?这里发生了什么?正确的方法是什么? import atexit, sys, signal, time, threading termina ..
发布时间:2020-05-13 22:42:23 Python

Python进程不会调用atexit

我正在尝试在Process中使用atexit,但是不幸的是它似乎不起作用.这是一些示例代码: import time import atexit import logging import multiprocessing logging.basicConfig(level=logging.DEBUG) class W(multiprocessing.Process): def r ..
发布时间:2020-05-13 19:32:17 Python

混合模式C ++/CLI崩溃:atexit中的堆损坏(静态析构函数注册)

我正在部署程序,并且代码库是C ++/CLI和C#的混合体. C ++/CLI具有各种风格:本机,混合(/clr)和安全(/clr:safe).在开发环境中,我创建了所有C ++/CLI代码的DLL,并从C#代码(EXE)引用了该DLL.这种方法完美无缺. 对于我要发布单个可执行文件的版本(简单地指出“为什么不仅将DLL和EXE分开?"是不可接受的.) 到目前为止,我已经用所有不同的源 ..
发布时间:2020-05-01 03:42:25 C#/.NET

在父进程出口处杀死子进程

我对C和编程非常陌生,需要一些帮助.在linux(cygwin)上的c中,我需要在退出时删除所有子进程.我看过其他类似的问题,但无法正常工作.我尝试过- atexit(killzombies); //in parent process void killzombies(void) { printf("works"); kill(0, SIGTERM); printf ..
发布时间:2020-04-26 09:46:20 其他开发

更好地替换C中的exit()和atexit()

我是C编程新手.我曾经认为使用exit()是终止进程的最干净方法(因为它可以删除临时文件,关闭打开的文件,正常终止进程...),但是当我在终端上尝试使用man exit命令时(Ubuntu) 16.04.5,gcc 5.4.0),我看到了以下一行: exit()函数使用不受保护的全局变量,因此 它不是线程安全的. 之后,我尝试进行一些有关更好地替代exit()的研究(从一开始就改变了我 ..
发布时间:2020-04-23 10:51:00 服务器开发

一致的方式来捕获C ++库崩溃

我已经在不同的网站环顾四周,找不到这个问题的答案,除了那些似乎不会工作的人。正如标题所说,我试图找到一种方法来捕获如果我的图书馆工作崩溃。我有一个Root类,它持有我在库中的许多经理样式类的实例,它释放它的析构函数中的实例。自然,管理者负责相当多的数据,所以如果他们没有被妥善处理,有一个机会,一个相当不可接受的,甚至危险的内存泄漏级别。 我知道,当程序崩溃时,操作系统将释放程序的堆栈空间,但 ..
发布时间:2016-10-28 05:22:52 C/C++开发

when是一个函数使用atexit()注册

我想知道如果在 atexit()注册的函数在全局变量被销毁之前或之后被调用。这是由标准还是实现定义的? 解决方案 它是明确定义的,使用 atexit(): > 3.6.3终止 3。如果具有静态存储持续时间的对象的初始化完成,调用 std :: atexit (参见 ,18.5) code> std :: atexit 在调用对象的析构函数之前进行排序。如果在 ..
发布时间:2016-10-23 14:08:50 C/C++开发