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 都不会调用终止程序
 
  异常终止也不会。

相关文章推荐

学习笔记之atexit()函数

最近在学习进程有关的知识,遇到了atexit()这个函数 这个函数有什么用呢?它会注册一个函数,当进程结束后就会调用被注册的函数。 可以看到它的参数是一个函数指针。 写一个简单的程序测试一下...

Linux中的file_struct、t命令以及atexit函数有关知识

1、struct file结构体定义在include/Linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。它由内核在打开文...

进程终止函数:abort, atexit, exit, _exit, _Exit

#include  void exit(int status); void _Exit(int status); int atexit( void(*func)(void) );   #in...

关于atexit函数的使用以及权限t的设置与测试

再了解atexit函数之前,先加药介绍一下进程的终止方式有哪些? 进程终止的方式有8种,前5种为正常终止,后三种为异常终止:       1 从main函数返回;       2 调用exit函...

atexit() 和 exit() 函数

我们通常认为C语言的起始函数是main函数,实质上一个程序的启动函数并不一定是main函数,这个可以采用链接器来设置,但是gcc中默认main就是C语言的入口函数,在main函数启动之前,内核会调用一...
  • wjw824
  • wjw824
  • 2014年11月26日 11:32
  • 89

Linux 进程的基本控制—atexit、on_exit函数、文件锁

进程的基本控制:       进程控制函数:pause、sleep、usleep   函数atexit  on_exit   atexit函数:     #include      功能:注册终止函...

详解C标准库中的atexit()函数

测试背景:centos6.5,gcc编译器   内核版本 2.6.32-431.el6.i686 函数:atexit 函数声明: int atexit(void (* function) (v...

atexit()函数登记顺序的的验证

一、简介 1.、函数名: atexit 2、头文件:#include 3、功 能: 注册终止函数(即main执行结束后调用的函数) 4、用 法: void atexit(void (*func...

linux系统编程之进程(四):进程退出exit,_exit区别即atexit函数

(转自)作者:mickole  出处:http://www.cnblogs.com/mickole/ 一,进程终止有5种方式: 正常退出: 从main函数返回调用exit调用_exi...
  • big_bit
  • big_bit
  • 2016年04月26日 19:52
  • 245

浅析exit()和atexit()函数

当内核使用一个一个exec函数执行c程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序需将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用mian函数做好...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:atexit()函数
举报原因:
原因补充:

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