exit()函数和atexit()函数 复习

这样的函数有什么用途呢?

嘘~~~~

上菜(代码)!!

#include<stdio.h>
#include<stdlib.h>
void send (void);
void failure(void);
int main(void){
int n;
atexit(send);//注册send()函数
puts("请输入数字:"):if(scanf("%d",&n)!=1)
{
puts(" No integer");
atexit(failure);
exit(EXIT_FAILURE);
}
printf("%d is %s .\n",n,(n%2==0)?"even":"odd");
return 0;
}
 void send(void){
puts(" This is cuccess!");
puts(" send cuccess!!");
}
void failure(void){
puts("this is failure no cuccess!");
puts("NO cuccess.");
}

  运行结果:

请输入数字:

2 is even

This is cuccess!

send cuccess!!

如果输入的是另一个:

请输入数字:

sa

No integer

this is  failure no success!

No cuccess.

This is cuccess!

send cuccess!!

看完代码和运行结果,接下来咱们看一下atexit()函数,只需要退出时要调用的函数地址传递给atexit().因为作为函数参数时,函数名代表地址,所以使用send或者failure作为参数。于是atexit()把作为参数的函数调用exit() 执行的函数在列表中进行注册。ANSI保证这个在列表中至少可以放32个函数。

通过atexit() 调用把每个函数都添加到列表中,最后,调用exit()函数时,按先进后出的顺序执行这些函数。

而在输入失败时,因为有if()条件语句所以多了failure的类。

注意:mian()终止时会隐式的调用exit();因此,及时未显示的调用exit(),也会调用failure()

exit()

exit()执行了atexit()指定的函数后,将开始清理自身,它会将所有的输出流、关闭所有打开的流并关闭临时文件。然后,exit()把控制返回给主机环境。

原文地址:https://www.cnblogs.com/X404/p/12219571.html

时间: 2024-10-17 04:12:57

exit()函数和atexit()函数 复习的相关文章

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

摘要:本文主要讲述进程的终止方式,以及如何使用exit()函数来终止进程,回收进程用户空间资源:分析了exit()函数与_exit()函数,return关键字的差异.同时详细解读了如何使用atexit()和on_exit()函数来注册终止处理程序. 进程终止.回收资源 1.进程终止方式 在内核中,程序执行的唯一方法是调用一个exec函数.而进程自愿终止的唯一方法是显示或隐式地调用_exit()或_Exit(). 进程有5种正常终止方式: (1)常见的一种是,在main函数中执行return语句,

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

很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束.在程序的某个地方用exit()结束程序.用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理.方法就是用atexit()函数来注册程序正常终止时要被调用的函数. atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数.atexit()的函数原型是:#include <cstdlib

atexit函数详解

对C语言有所了解的人都知道main函数是整个程序的入口,但是其实不然,在内核中可以使用链接器来设置程序的开始地方.当内核使??个exec函数执?C程序时,在调?main函数之前先调??个特殊的启动例程,可执?程序将此例程指定为程序的起始地址.启动例程从内核获取命令?参数和环境变量,然后为调?main函数做好准备. 前面我们关注的是程序开始进入时的调用函数,而atexit函数是一个特殊的函数,它是在正常程序退出时调用的函数,我们把他叫为登记函数 (函数原型:int atexit (void (*)

atexit函数和exit函数的理解

p { margin-bottom: 0.25cm; line-height: 120% } 按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用,通常这32个函数被称为终止处理程序,并调用atexit函数来登记这些函数. 我们通常认为C语言的起始函数是main函数,实质上一个程序的启动函数并不一定是main函数,这个可以采用链接器来设置,但是gcc中默认main就是C语言的入口函数,在main函数启动之前,内核会调用一个特殊的启动例程,这个启动例程从内核中取得命令

关于atexit函数

按照规定,一个进程可以登记多至32个函数,这些函数将有exit自动调用.我们称这些函数为终止处理程序,并调用atexit函数来登记这些函数. 头文件和参数: #include <stdlib.h> int atexit(void (*fun)(void)); 它的参数是一函数指针.exit调用这些函数的顺序与它们登记时候的顺序相反. 首先登记这10个函数,然后结束时,按照相反的顺序调用这些终止处理程序.

atexit()函数

atexit()函数  头文件:#include<stdlib.h> 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: int atexit(void (*func)(void)); 注意:按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用.atexit()注册的函数类型应为不接受任何参数的void函数,exit调用这些注册函数的顺序与它们登记时候的顺序相反.同一个函数如若登记多次,则也会被调用多次. 例: 运行结果:

进程环境详解(二)---进程终止和 atexit 函数详解

进程终止可以分为 进程正常终止 和 进程异常终止 . 进程正常终止有以下几种情况: 在 main 函数返回 调用 exit 函数 调用 _exit 或者 _Exit 函数 最后一个线程从启动代码中返回 最后一个线程调用 pthread_exit 进程异常终止有以下几种情况: 调用 abort函数 进程收到信号终止 最后一个线程对取消请求作出响应 ======================================================== exit 函数 和 _exit / _

atexit函数和两种特殊文件权限位

atexit函数 atexit函数的原型如下 void atexit(void (*func)(void)) 它是一个参数为返回值和参数均为空的函数指针的函数,含义是当前进程结束之前执行参数函数指针所指向的函数,使用的时候要在main中注册,一次可以注册很多函数,函数的执行顺序与注册的先后有关,关系恰好相反,第一个注册的函数反而是最后一个执行.下面是执行实例. 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 5 void func1() 6

python第三天学习复习,集合set,文件操作,函数(普通函数,递归,高阶函数),字符编码和解码

三元运算 age = 23 #就是if else的简单写法 a = age if age < 20 else 25 集合 set #集合是无序切不重复的, #当对列表去重复的时候,可以直接使用 set(list),就将list转为set,并去除中间重复的 list = [1,2,3,4,5,5,6,7,8,9,1] s = set(list) 运行结果:可以发现将 list中重复的去掉,并且类型变成set,再使用list(set),转为list 集合操作 # Author:zylong set1