exit()与_exit()的区别
2016-02-12 00:07
429 查看
exit()和_exit()的区别:
注:这两个函数作用都是退出一个进程,区别如下:1)_exit()是一个系统调用函数,exit()是一个标准c库函数;
2)exit()会清空输出缓冲区的缓存,执行标准I/0库的清理关闭操作;
3)exit()会执行调用使用atexit注册的终止处理程序;
注:对于atexit()注册的终止处理程序是先注册后调用,ANSI C规定最多可以注册32个终止处理程序。
验证示例代码:
// demo1.c #include<stdio.h> #include<unistd.h> // _exit() int main() { printf("hello world"); _exit(0); } root@ubuntu15:code# ./main root@ubuntu15:code#
// demo2.c #include<stdio.h> #include<unistd.h> // _exit() int main() { printf("hello world"); fflush(stdout); // 清空输出缓冲区 _exit(0); } root@ubuntu15:code# ./main hello worldroot@ubuntu15:code#
// demo3.c #include<stdio.h> #include<unistd.h> // _exit() int main() { printf("hello world\n"); // 换行带清空输出缓冲区的功能 _exit(0); } root@ubuntu15:code# ./main hello world root@ubuntu15:code#
// demo4.c #include<stdio.h> #include<stdlib.h> // exit() int main() { printf("hello world"); exit(0); } root@ubuntu15:code# ./main hello worldroot@ubuntu15:code#
// demo5.c // 观察终止处理程序是先注册后执行 #include<stdio.h> #include<stdlib.h> // exit() // int atexit(void (*function)(void)); void funcA(void) { printf("I'm A\n"); } void funcB(void) { printf("I'm B\n"); } void funcC(void) { printf("I'm C\n"); } int main() { atexit(funcA); atexit(funcB); atexit(funcC); exit(0); } root@ubuntu15:code# ./main I'm C I'm B I'm A root@ubuntu15:code#
相关文章推荐
- 轻量级开发
- 如何处理大量并发用户访问网页,并且如何跟踪每个用户
- 应用内调用系统的照相机拍照的方法
- HDU 5250 三阶魔方(模拟、置换)
- nyoj891找点
- python黑魔法之参数传递
- 常用python编程模板汇总
- 一步步解析Python斗牛游戏的概率
- 理解Python垃圾回收机制
- 教大家使用Python SqlAlchemy
- PHP共享内存用法实例分析
- c语言:break和continue的区别,编程举例说明
- PHP消息队列用法实例分析
- PHP信号量基本用法实例详解
- JavaScript判断表单为空及获取焦点的方法
- JavaScript实现弹出模态窗体并接受传值的方法
- JavaScript实现点击单元格改变背景色的方法
- 原生javascript实现图片无缝滚动效果
- 原生javascript实现自动更新的时间日期
- jquery实现具有嵌套功能的选项卡