当前位置:  开发笔记 > 编程语言 > 正文

on_exit()和atexit()函数之间有区别吗?

如何解决《on_exit()和atexit()函数之间有区别吗?》经验,为你挑选了2个好方法。

两者之间有什么区别吗?

   int on_exit(void (*function)(int , void *), void *arg);

   int atexit(void (*function)(void));

除了on_exit使用的函数获得退出状态的事实?

也就是说,如果我不关心退出状态,是否有任何理由使用其中一个?

编辑:许多答案警告反对,on_exit因为它是非标准的.如果我正在开发一个供公司内部使用的应用程序并保证在特定配置上运行,我应该担心这个吗?



1> Derek Park..:

你应该atexit()尽可能使用. on_exit()是非标准的,不太常见.例如,它在OS X上不可用.

Kernel.org - on_exit():

此功能来自SunOS 4,但也存在于libc4,libc5和glibc中.它不再出现在Solaris(SunOS 5)中.避免使用此功能,而是使用标准的atexit(3).



2> Mike Stone..:

根据这个链接我发现,似乎有一些差异. on_exit将允许您传入一个在on_exit调用函数时传入函数的参数...这可能会让您设置一些指针,以便在退出时进行一些清理工作.

此外,它似乎on_exit是一个SunOS特定的功能,可能在所有平台上都不兼容......所以你可能想要坚持使用atexit,尽管它更具限制性.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有