当前位置:  编程技术>c/c++/嵌入式

exit和atexit的区别详细解析

    来源: 互联网  发布时间:2014-10-19

    本文导语:  一、exit()函数函数声明:void exit(int state);exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运...

一、exit()函数
函数声明:void exit(int state);
exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。

二、atexit()函数
函数声明:int atexit(void (*func)(void)); 
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit()结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就是用atexit()函数来注册程序正常终止时要被调用的函数。

atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是:int atexit (void (*)(void));

在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。

下面是一段代码示例:

代码如下:

#include // 使用atexit()函数所必须包含的头文件stdlib.h
#include

void terminateTest()
{
    cout


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang类system的类成员方法: exit定义及介绍
  • 请问exit与_exit的区别?
  • java命名空间javax.swing.event类hyperlinkevent.eventtype的类成员方法: exited定义及介绍
  • System.exit(0);和System.exit(1)有什么区别?
  • java命名空间java.awt类event的类成员方法: mouse_exit定义及介绍
  • _exit()函数和_Exit()函数有区别吗?
  • java命名空间java.util.logging类logger的类成员方法: exiting定义及介绍
  • EXIT_SUCCESS和EXIT_FAILURE问题
  • java命名空间java.awt.event类mouseevent的类成员方法: mouse_exited定义及介绍
  • 现在用 System.exit(0) or System.exit(1) 来退出弹出窗口,但是连父窗口一起关闭(紧急求解)
  • java命名空间javax.swing类jframe的类成员方法: exit_on_close定义及介绍
  • exit(0)和_exit(0)有什么区别呢?
  • java命名空间javax.swing接口windowconstants的类成员方法: exit_on_close定义及介绍
  • linux exit和_exit函数的辨析
  • java命名空间java.lang类runtime的类成员方法: exit定义及介绍
  • 论坛 iis7站长之家
  • 我在shell中su 到其它用户然后exit就退出shel
  • 关于exit函数,参数值的疑问
  • exit与wait
  • 请高手帮忙解释一下,insmod ./$module.ko || exit 1中的“||”是什么意思啊,多谢!
  • 调用exit函数的一个问题?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3