问题标签 [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.
c - atexit认为有害吗?
atexit
在图书馆等大型项目中使用是否存在固有危险?
如果是这样,背后的技术性质atexit
可能导致大型项目出现问题的原因是什么?
python - fabric cleanup operation with atexit
Is there a received wisdom on how to clean up (e.g. remove temp files etc.) in a fabric task? if I use the atexit
module, as I would normally, then I have difficulty because I can't use the @roles
decorator to decorate the function passed to atexit.register()
. Or can I? How are other fabric users dealing with this?
c - 是否可以更改使用 atexit() 注册的函数中的退出代码?
手册页atexit(3)
说明如下:
POSIX.1-2001 表示
exit(3)
多次调用(即exit(3)
在使用 注册的函数内调用atexit()
)的结果是未定义的。在某些系统上(但不是 Linux),这可能导致无限递归;可移植程序不应exit(3)
在使用atexit()
.
但是,我有兴趣在我的程序的终结器中修改退出代码。我设法做到这一点的唯一方法是exit()
从我的终结函数中调用,但手册页明确警告不要这样做。
这样做有什么实际危险吗?是否有任何实现该方法可能会导致问题?更好的是,还有其他方法吗?
c - 主循环不会正常退出
我创建了这个函数,它充当基于终端的应用程序的主菜单:
所有大写的值都是#defined
常量,除了宏之外...(...)
都是函数(这就是为什么没有分号结束这些行的原因)。wizard_help(...)
directory_navigate(...)
这是应用程序的主要功能:
在这里,只有SPLASH()
一个宏。
所有布尔值(即true
, false
)都是预定义的 unsigned char 值,而bool
is typedef unsigned char bool;
。
它的正常行为是在用户输入(COMMAND_EXIT 的当前值)wizard_run()
时退出循环,执行然后正常终止应用程序。相反,当我第一次键入时,它会重新显示菜单,当我第二次键入时,它会终止并出现以下错误:exit
reset(); encryption_reset(); directory_reset(is_safemode);
exit
exit
当程序在 下运行时gdb
,我收到此错误:
main()
除了调用之外没有其他功能wizard_run()
,因此这不是重新显示菜单而不是退出的原因。有任何想法吗?
提前致谢!!!:D
libc - 什么时候应该使用 atexit()?
GNU页面说:
如果发生正常终止,您的程序可以安排运行自己的清理功能。如果您正在编写一个用于各种应用程序的库,那么坚持所有应用程序在退出之前显式调用该库的清理函数是不可靠的。通过使用 atexit 或 on_exit 在库本身中设置清理函数,使清理对应用程序不可见会更加健壮。
SDL 在其中 一页中 说:
您可以使用
SDL_Quit()
withatexit()
确保它在应用程序关闭时运行,但从库或其他动态加载的代码中执行此操作是不明智的。
我从 GNU 页面了解到,它鼓励在程序中使用 atexit()。
有人可以详细说明一下,取自 SDL 页面吗?意思不是很明显:
但从库或其他动态加载的代码中执行此操作是不明智的。
使用 atexit() 时要避免哪些陷阱?
上面的两个引用是否相互矛盾?
c - MinGW GCC - 对“atexit”的未定义引用
我正在尝试将一个大型项目与 MinGW 的 GCC 4.8.1 链接到 x86 目标。我这样称呼链接器
通过这个调用,我得到了这个链接器错误:
我尝试了不同的msvcr
版本(100 和 90),但这更像是一次绝望的尝试,因为我对这个问题不是很熟悉。我正在使用 MinGW 提供的正确库。有什么办法可以解决这个错误吗?
c++ - 对`atexit - bluez 编译的未定义引用
当我尝试将 bluez-4.101 交叉编译到 mipsel-linux 目标时,我遇到了这个问题。
以下是指定的编译器选项和链接器选项
-lstdc++
-L 有libstdc++.so所在的路径
-nostdlib 不指定
期待您的帮助。
c - 由于 atexit() 函数关闭键盘记录器时出现错误
当我的代码中有一个函数时,我会segmentation fault (core dumped)
在关闭我的键盘记录器时得到一个。atexit()
这是令人困惑的,因为该atexit()
函数只应在有人试图退出程序时调用(而不仅仅是在给出关闭键盘记录器的命令时)。
如果我取出atexit(final)
主线,一切正常。但是我需要atexit()
在我的代码中使用函数来处理当人退出 shell 时会发生什么。
提前致谢。
c - atexit() 函数应该去哪里以防止段错误?
我的代码工作得很好,但是当我退出我的 simpleshell 时,我遇到了分段错误。atexit(final) 的 final 仍然被调用并正常工作。我认为问题出在 atexit() 上,因为当从代码中删除 atexit() 时,我可以正确地“退出”(即 CNTRL+D)simpleshell。但是,重申一下,一旦 atexit() 在我的代码中(见下文以查看它的位置),它会在我退出时导致分段错误(即使“final”执行)。
c++ - 为什么即使执行 SetConsoleCtrlhandler 的 atexit 或 ConsoleHandler 也会中断线程?
我在 Windows 7 下有一个多线程应用程序。
当用户在命令行的角落按“X”、“Ctrl+C”、关闭操作系统等时,我需要正确完成具有打开的描述符、连接等的线程中的作业。
我为 SetConsoleHandler 设置了一个处理程序,它为其他线程设置适当的标志以正确完成它们的工作。但是所有这些都被中断,并且 y 以代码 0xc000013a 退出。有时甚至我的处理程序也没有时间设置标志。
当我尝试在 atexit 处理程序中执行相同的操作时,同样的问题仍然存在。
为什么即使在中断处理程序期间所有线程都停止?我怎样才能避免这种情况并让我所有的线程完成他们的工作?