C语言通用工具库之exit()和atexit()函数
一、exit()和atexit()函数
exit()退出程序。在main()函数返回系统时将自动调用exit()函数。
atexit()函数通过退出时注册被调用的函数提供这种功能,atexit()接受一个函数指针作为参数。
#include <stdio.h>
#include <stdlib.h>void sign_off(void);
void too_bad(void);int main()
{int n;atexit(sign_off);puts("请输入一个整数:");if(scanf("%d", &n) != 1){puts("输入不是整数");atexit(too_bad);exit(EXIT_FAILURE);}printf("%d is %s.\n", n , (n % 2 == 0) ? "双数" : "单数");return 0;
}void sign_off(void)
{puts("这不是一个整数");
}void too_bad(void)
{puts("请输入一个整数");
}
1、atexit()函数的用法
这个函数使用函数指针。要是用atexit()函数,只需要退出时要调用的函数地址传递给atexit()即可。这个函数名作为函数参数时相当于该函数的地址。atexit()函数注册列表中的函数,当调用exit()时就会执行这些函数。ANSI保证,在这个列表中至少可以存放32个函数。最后调用exit(0函数是,exit()会执行这些函数(执行顺讯与列表中的函数顺序相反,即最后添加的函数会先执行)。
2、exit()函数的用法。
exit()执行完指定的函数后,会完成一些清理工作:刷新所有输出流、关闭所有打开的流和关闭有标准函数I/O函数tmpfile()创建的临时文件。然后exit()把控制权返回主机环境,如果可能的话,向主机环境报告终止状态。通常,UNIX程序使用0表示成功终止,用非0值表示终止失败
C语言通用工具库之exit()和atexit()函数相关推荐
- 浅析exit()和atexit()函数
当内核使用一个一个exec函数执行c程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序需将此例程指定为程序的起始地址.启动例程从内核获取命令行参数和环境变量,然后为调用mian函数做好 ...
- C++中Exit()与atexit()函数的使用
来源:http://blog.sina.com.cn/s/blog_5cec5bad0100b0x2.html 一.exit()函数 函数声明:void exit(int state); exit() ...
- C语言 通用工具库 stdlib.h
ANSI C在stdlib.h头文件中定义了一些实用函数. stdlib.h中声明的类型 size_t sizeof运算符返回的整数类型 wchar_t 用于表示宽字符的整数类型 div_t div( ...
- c语言程序库文件,c语言标准函数库
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 在C语言程序设计里,C 标准函数(C Standard library)是所有符合标准的头文件(head file)的集合,以 ...
- 出错处理函数abort、exit、atexit、strerror
出错处理函数abort.exit.atexit.strerror. . .2010-06-30 22:43摘要:本文详细讲述了几个出错处理的函数abort.exit.atexit.strerror函数 ...
- time库是python中处理时间的标准库_python语言time库和datetime库基本使用详解
今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了2个半小时的时间,结合自己所学,所思,所想写作 ...
- linux C语言多线程库pthread中条件变量的正确用法逐步详解
linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...
- 程序显示文本框_vb程序语言题库
vb语言题库 一.程序填空 共1题 (共计20分) 第1题 (20.0分) 题号:711 难度:中 第1章 ----------------------- ...
- 山科c语言题库,计算机培训 所有C语言题库
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...
最新文章
- 读书笔记:《少的力量》
- 28岁以后,我不抱大腿,我就是大腿
- 深入理解JavaScript系列(5):强大的原型和原型链
- matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...
- Python爬虫教程:验证码的爬取和识别详解
- 什么是Tensor Flow和lite以及数据流图
- Django的缓存(1)
- 推荐电影 历年佳片有约电影 1998-2007
- Python——免费观看全网视频小程序
- java连连看怎么加音效_怎么给视频加音效
- 减轻用户记忆负担:识别与回忆在人机交互中的应用
- 【Uplift】因果推断基础篇
- 用ybc_box做小程序
- Organ at Risk Segmentation for Head and Neck Cancer using Stratified Learning and Neural Architectur
- Java网课简易飞机大战
- android手机8g内存够用嘛,手机内存选8G还是12G,行业老人告诉你,多数人都花冤枉钱了...
- (转)Unity 之 UGUI 小总结
- Android后台监听耳机(线控、蓝牙)按键事件
- skid buffer
- 阿里云服务器能做什么呢?
热门文章
- 北京应用物理计算机与科学,张爱清 - 北京应用物理与计算数学研究所 -
- 编程语言竞争激烈,各大城市岗位薪资竟然也......
- JS数据类型lianxi
- vue项目引入容联七陌客服系统(qimoChatClick点击事件的使用)
- python socket使用UDP控制继电器进行硬件产品循环开关机测试
- 计算机RIY的英语,Rylee[赖莉,赖恩,赖利]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
- java查询数据库大批量数据_数据库有百万数据量的情况下,分页查询的方法及其优化方式...
- Dundas Chart控件的使用总结
- WinForms Accordion控件
- 关于QGroundControl的软件架构的理解