atexit()函数

转载 2013年12月03日 10:48:18

http://www.cnblogs.com/wanghetao/archive/2012/04/03/2431256.html


注意:

调用 _exit,_Exit 都不会调用终止程序,异常终止也不会。

atexit

 
  函数名: atexit
 
  头文件:#include<stdlib.h>
 
  功 能: 注册终止函数(即main执行结束后调用的函数)
 
  用 法: int atexit(void (*func)(void));
 
  注意:按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用。atexit()注册的函数类型应为不接受任何参数的void函数,exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次,则也会被调用多次。
 
  程序例:
 
  #include <stdio.h>
 
  #include <stdlib.h>
 
  void exit_fn1(void)
 
  {
 
  printf("Exit function #1 called\n");
 
  }
 
  void exit_fn2(void)
 
  {
 
  printf("Exit function #2 called\n");
 
  }
 
  int main(void)
 
  {
 
  /* post exit function #1 */
 
  atexit(exit_fn1);
 
  /* post exit function #2 */
 
  atexit(exit_fn2);
 
  return 0;
 
  }
 
  输出:
 
  Exit function #2 called
 
  Exit function #1 called
 
  进程的终止方式:
 
  有8种方式使进程终止,其中前5种为正常终止,它们是
 
  1:从 main 返回
 
  2:调用 exit
 
  3:调用 _exit 或 _Exit
 
  4:最后一个线程从其启动例程返回
 
  5:最后一个线程调用 pthread_exit
 
  异常终止有3种,它们是
 
  6:调用 abort
 
  7:接到一个信号并终止
 
  8:最后一个线程对取消请求做出响应
 
  #include <stdlib.h?
 
  void exit (int status);
 
  void _Exit (int status);
 
  #include <unistd.h>
 
  void _exit (status);
 
  其中调用 _exit,_Exit 都不会调用终止程序
 
  异常终止也不会。

linux中的atexit函数

按照ISO C的规定,一个进程可以登记至少32个函数,这些函数将由exit自动调用。     atexit函数是一个特殊的函数,它是在正常程序退出时调用的函数,我们把他叫为登记函数(函数原型:in...
  • qq_36221862
  • qq_36221862
  • 2017年02月20日 11:40
  • 1213

atexit函数详解

对C语言有所了解的人都知道main函数是整个程序的入口,但是其实不然,在内核中可以使用链接器来设置程序的开始地方。当内核使⽤⼀个exec函数执⾏C程序时,在调⽤main函数之前先调⽤⼀个特殊的启动例程...
  • leex_brave
  • leex_brave
  • 2016年07月03日 10:05
  • 4983

atexit函数和on_exit函数

1.atexit函数 atexit(设置程序正常结束前调用的函数)  相关函数  _exit,exit,on_exit 表头文件  #include 定义函数  int atexit ...
  • elbort
  • elbort
  • 2012年05月15日 10:08
  • 2821

atexit()函数使用说明

摘要:本文描述的是Linux手册页中atexit ()函数的使用说明,使用atexit()函数注册终止处理程序.原文来自:http://www.kernel.org/doc/man-pages/....
  • u010006102
  • u010006102
  • 2014年10月02日 21:43
  • 900

atexit()函数调用注册函数的顺序

atexit()函数调用注册函数的顺序
  • asd7486
  • asd7486
  • 2016年07月04日 14:36
  • 573

c语言基础函数——exit()和atexit()

C语言中的基础函数,exit()和atexit()。
  • jiangwei0512
  • jiangwei0512
  • 2016年02月14日 16:55
  • 624

程序退出时的必要处理之atexit()函数

/* 很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种 比如main()函数运行结束、在程序的某个地方用exit()结束程序、用户通过Ctrl+C或Ctrl+brea...
  • yangchangda1
  • yangchangda1
  • 2015年03月30日 13:02
  • 505

浅析exit()和atexit()函数

当内核使用一个一个exec函数执行c程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序需将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用mian函数做好...
  • wy1550365215
  • wy1550365215
  • 2017年04月17日 22:07
  • 472

C++中的atexit函数和exit函数

一、exit()函数 函数声明:void exit(int state); exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非...
  • sinat_24520925
  • sinat_24520925
  • 2015年03月07日 18:27
  • 580

atexit 函数

很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操...
  • adcxf
  • adcxf
  • 2008年03月26日 09:26
  • 667
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:atexit()函数
举报原因:
原因补充:

(最多只允许输入30个字)