C程序的启动与终止

区别:
_exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;
exit()函 数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。

exit()函数与_exit()函数最大的区别就在于 exit()函数在调用 exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。

#include<unistd.h>
main()
{
printf("output begin\n");
printf("content in buffer");
//这里不能加\n,一旦加了换行,则printf会立即输出,行缓存模式
_exit(0);
}
//输出:output begin

在Linux的标准函数库中,有一套称作“高级I/O”的函数,我们熟知printf() fopen() fread() fwrite()都在此列,它们也被称作“缓冲I/O(buffered I/O)”,其特征是对应每一个打开的文件,在内存中都有一片缓冲区,每次读文件时,会多读出若干条记录,这样下次读文件时就可以直接从内存的缓冲区中读取,每次写文件的时候,也仅仅是写入内存中的缓冲区,等满足了一定的条件(达到一定数量,或遇到特定字符,如换行符\n和文件结束 EOF),再将缓冲区中的内容一次性写入文件,这样就大大增加了文件读写的速度,但也为我们编程带来了一点点麻烦。如果有一些数据,我们认为已经写入了文件,实际上因为没有满足特定的条件,它们还只是保存在缓冲区内,这时我们用_exit()函数直接将进程关闭,缓冲区中的数据就会丢失,反之,如果想保证数据的完整性,就一定要使用exit()函数。

exit()在结束调用它的进程之前,要进行如下步骤:
1.cleanup();
2.在atexit()注册的函数;
最后调用_exit()函数。。。

_exit()不执行I/O缓存的刷新动作

_exit终止调用进程,但不关闭文件(应该也关闭文件的),不清除输出缓存,也不调用出口函数。
exit函数将终止调用进程。在退出程序之前,所有文件关闭,缓冲输出内容
将刷新定义,并调用所有已刷新的“出口函数”(由atexit定义)。

_exit也会关闭文件的。
_exit做3件事(man):
1,Any  open file descriptors belonging to the process are closed
2,any children of the process are inherited  by process 1, init
3,the process's parent is sent a SIGCHLD signal

exit执行完清理工作后就调用_exit来终止进程。

exit() _exit()相关推荐

  1. 6.exit _exit _Exit

    进程的终止有8种方式,5种正常终止和3中异常终止 5种正常终止: 1:从 main 执行return返回. 2:调用 exit(int x), 程序返回码是x,调用各种中止处理程序,关闭或冲洗缓冲区. ...

  2. fork vfork exit _exit (转)

    原文地址:http://hi.baidu.com/ikaruga11/blog/item/fb6d75725a8d8d148701b080.html APUE上的一个例子: example1 (for ...

  3. exit(),_exit()的区别

    Linux的源码 #define __NR_exit                 1 #define __NR__exit __NR_exit /* 摘自文件include/asm-i386/un ...

  4. C语言 exit() _exit()

    基础 在main中终断自己,并返回 1.0:sucess;1:failure;2:error _exit(int status); exit(int status); _Exit(int status ...

  5. exit()和_exit()函数

    进程就好比人一样有其生命,我们通过fork()函数来创建一个进程,那么我们又是如何来中止进程呢. 进程退出 1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了 ...

  6. Linux中exit与_exit的区别

    在exit,_exit的区别 - exit()与_exit()函数的区别(Linux系统中)2012-03-20 15:19:53 分类: LINUX 注:exit()就是退出,传入的参数是程序退出时 ...

  7. 关于return和exit

    关于return和exit 在子进程退出的时候有两种方式,exit和exec族函数,不能使用return,为什么不能用return呢,exit改成return 会出现父子进程又各自重复开始进行. 1. ...

  8. 【VS开发】Return与Exit的区别

    1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数. 2. exit是系统调用级别,它表示一个进程的结 ...

  9. exit()函数详解与Exit() 和 Return() 的区别

    exit(0) 表示程序正常, exit(1)/exit(-1)表示程序异常退出 exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 return() 是当前函数返回, ...

最新文章

  1. love2d--glsl03噪声
  2. 开发人员:月薪过万与年薪百万之间的差距
  3. Codeforces Round #700 (Div. 2)A~D2解题报告
  4. 解决neo4j导入数据时报错:neo4j already contains data, cannot do import here报错
  5. iPhone 12 Pro火爆程度超预期 苹果紧急向关键组件厂商加单
  6. php微博发布时间,PHP格式化显示时间函数,用于微博、社交媒体等,类似豆瓣
  7. Unity游戏开发案例分享
  8. 巴菲特对优质公司买卖
  9. JMS消息服务 API解析
  10. Linux(深度deepin)下安装jdk、tomcat、idea
  11. Godaddy、Lunarpages、IXwebhosting国外三大主机点评
  12. android 加载高德地图api,Android应用引入高德地图API
  13. Python+OpenCV手势识别Mediapipe(基础篇)
  14. 域控可以改计算机用户名,如何修改ActiveDirectory域控制器计算机名称
  15. TFT_LCD 驱动芯片 SSD1963QL9
  16. shell 文本替换命令
  17. 贝叶斯估计(python 版)
  18. 【Plant Biotech. J.】MdBBX22–miR858– MdMYB9/11/12模块调节苹果皮中原花青素的生物合成
  19. 地图可视化工具有哪些,基于地图的数据可视化软件
  20. 轻薄本计算机专业够用吗,我女朋友都秒懂了 买轻薄本看这一篇就够了

热门文章

  1. 【原创】基于TensorFlow2识别人是否配戴眼镜的研究
  2. WebGoat安装及使用说明
  3. 【思维模型】五分钟了解<乔哈里窗>,为什么学习乔哈里窗?什么是乔哈里窗?怎么应用乔哈里窗?
  4. DC-DC升压变换器 直流隔离 高压稳压输出 电源模块
  5. 最优化方法(学习笔记)-第十一章等式约束优化问题
  6. 十三、java类的封装、继承、多态
  7. nodejs卸载安装
  8. 常见测试场景用例设计(1):登录页面测试用例
  9. css表格怎么垂直居中对齐,css表格垂直居中怎么设置?
  10. 查看当前Ubuntu系统的版本