gpt4 book ai didi

c++ - 默认退出函数实现

转载 作者:行者123 更新时间:2023-12-02 19:03:41 24 4
gpt4 key购买 nike

我需要实现退出调用的默认行为。我不知道我应该做什么以及最合适的方法是什么。我读过它应该关闭文件描述符和其他东西。我应该关闭默认流(stdout、err 和 in)吗?如何退出嵌套函数调用?使用 goto 是不好的做法,最好的突破方法是什么?谢谢。

最佳答案

执行 exit(3) 中列出的所有操作,然后调用_exit(2)系统调用。或者,使用longjmp(3)跳回 main() 函数,然后从该函数返回。这会调用与调用 exit(3) 相同的行为,并且同样依赖于 C 运行时,因此如果 exit(3) 由于某种原因不可用,则从main() 也可能无法正常工作。

不幸的是,据我所知,没有可移植的方法来枚举可能已使用 atexit(3)on_exit(3) 注册的所有函数,因此您'您必须手动跟踪这些(即每次调用 atexit(3)on_exit(3) 时,将函数指针附加到列表中)。法拉盛stdio(3) 3 简单 fflush(3)来电。

您不需要关闭任何流或文件描述符;操作系统应该自动执行此操作(操作系统不得泄漏流和文件描述符,因此它负责清理它们)。

注意:longjmp() 在 C++ 下几乎总是错误的;相反,抛出异常。一般只能在直C下使用。

关于c++ - 默认退出函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27196723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com