函数名: 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()的更多相关文章

  1. C语言中的程序终止函数

    在C语言的标准库<stdlib.h>中提供了一些与正常或者不正常的程序终止有关的函数,下面分别对其进行简单介绍. 参考文献: [1] C和指针,P298,342 [2] C程序设计语言现代 ...

  2. 回收进程用户空间资源 exit()函数 _exit()函数 atexit()函数 on_exit()函数

    摘要:本文主要讲述进程的终止方式,以及怎样使用exit()函数来终止进程.回收进程用户空间资源:分析了exit()函数与_exit()函数,returnkeyword的差异.同一时候具体解读了怎样使用 ...

  3. Reduce:规约;Collector:收集、判断性终止函数、组函数、分组、分区

    Stream 的终止操作  一.规约 * reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值. 返回 T * reduce(BinaryOpera ...

  4. return之为什么能够终止函数,代码演练

    ''' return 有终止函数的作用,下面通过执行到return x 以后, 就结束了程序的下一步执行,所以就没有往下面走,所以终端上也就只能 看到打印结果100,看不到打印呢 ''' def se ...

  5. C/C++程序终止时执行的函数——atexit()函数详解

    很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束.在程序的某个地方用exit()结束程序.用户通过Ctrl+C或Ctrl+break操作 ...

  6. Linux 多线程环境下 进程线程终止函数小结(转)

    pthread_kill: pthread_kill与kill有区别,是向线程发送signal.,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数. ...

  7. Linux进程理解与实践(三)进程终止函数和exec函数族的使用

    进程的几种终止方式(Termination) (1)正常退出 从main函数返回[return] 调用exit 调用_exit或者_Exit 最后一个线程从其启动处返回 从最后一个线程调用pthrea ...

  8. 函数:atexit

    函数说明: 1.原型:int atexit (void (*func)(void)); 2.功能:注册退出main函数之后将要被执行的函数: 3.参考:http://www.cplusplus.com ...

  9. javascript 终止函数执行操作

    1.如果终止一个函数的用return即可,实例如下:function testA(){    alert('a');    alert('b');    alert('c');}testA(); 程序 ...

随机推荐

  1. Opencv2.4.9+win7+VS2012一次性配置的方法--通过建立属性表永久配置

    Opencv的配置对于初学者很麻烦,网上的教程也非常多,针对不同的操作系统.opencv版本.Visual studio版本都有相应的教程,但即便是按照教程一步一步来,仍然难免出错,很多教程还是一次性 ...

  2. HDU3507 print article【斜率优化dp】

    打印文章 时间限制:9000/3000 MS(Java / Others)内存限制:131072/65536 K(Java / Others) 总共提交:14521已接受提交:4531 问题描述 零有 ...

  3. php-fpm: hundreds of seconds in the log

    favoriteI have nginx+php-fpm web serverSo I've noticed in php5-fpm.log many strange lines:[03-Sep-20 ...

  4. Zookeeper(三) Zookeeper原理与应用

    一.zookeeper原理解析 1.进群角色描述 2.Paxos 算法概述( ZAB 协议)    分布式一致性算法 3.Zookeeper 的选主(恢复模式) 以一个简单的例子来说明整个选举的过程. ...

  5. 51nod 1952 栈(单调队列)

    用deque实时维护栈的情况. 数加入栈顶部,删掉栈顶部的数,相当于加入一个数,删掉最早出现的数,每次求最大值,这个直接记录一下就好了. 数加入栈底部,删掉栈顶部的数,相当于加入一个数,删掉最晚出现的 ...

  6. static_cast 和 dynamic_cast

    1.static_cast static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证 ...

  7. 基础学习笔记之opencv(24):imwrite函数的使用

    http://www.cnblogs.com/tornadomeet/archive/2012/12/26/2834336.html 前言 OpenCV中保存图片的函数在c++版本中变成了imwrit ...

  8. Codeforces Round #404 (Div. 2)A B C二分

    A. Anton and Polyhedrons time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  9. linux根据进程pid查看进程详细信息

    http://note.youdao.com/noteshare?id=af2fdd34e3adfacda2d34706e16e5045

  10. Java BLOB 数据的插入与读取 操作

    package com.lw.database; import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...