从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit  系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是图中的“清理I/O缓冲”。

所需头文件: exit:   #include<stdlib.h>

_exit: #include<unistd.h>

函数原型:exit:  void exit(int  status)

_exit:  void  _exit(int  status)

函数传入值:status 是一个整型的参数,可以利用这个参数传递进程结束时的状态。一般来说,0表示正常结束;其他的数值表示出现了错误,进程非正常结束。在实际编程时,父进程可以利用wait 系统调用接收子进程的返回值,从而针对不同的情况进行不同的处理。

exit()与_exit() 实例分析

printf(const char *fmt,...)函数使用的是缓冲I/O方式,该函数在遇到 "\n" 换行符时自动从缓冲区中将记录读出。

<代码示例>

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>

int main()
{

pid_t result;
     result = fork();
     if(result<0)
     perror("fork");
     if(result == 0)
     {
             printf("This is _exit test\n");
             printf("This is the content in the buffer000");
            _exit(0);
     }
     else
     {
             printf("This is exit test\n");
             printf("This is the content in the buffer");
             exit(0);
     }
     return 0;
}

下面是运行结果:

结果分析:子进程中运行_exit(0)并未将Thisis the content in the buffer000 打印出来,而父进程中运行的exit(0)将Thisis the content in the buffer打印出来了。说明,exit(0)会在终止进程前,将缓冲I/O内容清理掉,所以即使printf里面没有 \n也会被打印出来,而_exit(0)是直接终止进程,并未将缓冲I/O内容清理掉,所以不会被打印出来。

转载于:https://blog.51cto.com/xiexiankun/2092613

exit( )和_exit()的区别(https://blog.csdn.net/lwj10386)相关推荐

  1. https://blog.csdn.net/blmoistawinde/article/details/84329103

    背景     很多场景需要考虑数据分布的相似度/距离:比如确定一个正态分布是否能够很好的描述一个群体的身高(正态分布生成的样本分布应当与实际的抽样分布接近),或者一个分类算法是否能够很好地区分样本的特 ...

  2. 操作系统---栈区与堆区 转自:https://blog.csdn.net/amcp9/article/details/79597481

    当一个程序运行时,其RAM存储方式是按照一定的区域划分的,以C为例 内存中的栈区处于相对较高的地址向较低的地址拓展,由操作系统决定的最高地址,所以它是一块连续的内存空间. 栈中分配局部变量空间,堆区是 ...

  3. 为什么领域模型对于架构师如此重要? https://blog.csdn.net/qq_40741855/article/details/84835212...

    为什么领域模型对于架构师如此重要? https://blog.csdn.net/qq_40741855/article/details/84835212 2018年12月05日 14:30:19 绝圣 ...

  4. 开源项目综合案例https://blog.csdn.net/m0_37700275/article/details/78783049

    开源项目综合案例 置顶 2017年12月12日 16:16:17 杨充 阅读数:473 版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/m0_37700275 ...

  5. linux中进程退出函数:exit()和_exit()的区别

    linux中进程退出函数:exit()和_exit()的区别 (1)_exit()执行后立即返回给内核,而exit()要先执行一些清除操作,然后将控制权交给内核. (2)调用_exit函数时,其会关闭 ...

  6. 数据采集之解析Mysql的binlog日志发送至Kafka实时消费(转:https://blog.csdn.net/liguohuabigdata/article/details/79472777)

    本文采用Maxwell来实现实时解析mysql的binlog日志发送至kafka 1.开启mysql binlog 环境中mysql是docker容器,所以需要进入容器修改mysql配置.docker ...

  7. https://blog.csdn.net/nameofcsdn/article/details/53164652

    https://blog.csdn.net/nameofcsdn/article/details/53164652 转载于:https://www.cnblogs.com/Yinku/p/106872 ...

  8. https://blog.csdn.net/cscscscsc/article/details/50

    https://blog.csdn.net/cscscscsc/article/details/50899522 转载于:https://blog.51cto.com/7237876/2129682

  9. GitHu的诞生记 转 https://blog.csdn.net/fanpeihua123/article/details/58151161

    前言:这篇文章应读者要求所写,主要聊聊版本管理系统(Version Control System,简称 VCS), 这篇文章不能让你学会一门技术, 但是希望能帮你理解版本管理的原理. "人肉 ...

  10. https://blog.csdn.net/wutianxu123/article/details/82597337

    web安全/渗透测试--1--web安全原则 版权声明:本文为博主原创文章,转载本站文章请注明作者和出处,请勿用于任何商业用途. https://blog.csdn.net/wutianxu123/a ...

最新文章

  1. Kaldi不支持Cuda10_1版本
  2. mysql导入Excel数据
  3. #ifdef,#else,#if,#endif (转载)
  4. Spring AOP 源码系列(一)解析 AOP 配置信息
  5. 经典C语言程序100例之六四
  6. linux 安装 Django14
  7. Linux命令之 mount -- 文件系统挂载
  8. ACM 题目分类POJ(自用,精)
  9. 解决连接mysql报错1130
  10. 机器学习笔记(十六)——EM算法概述
  11. 马化腾、李彦宏、雷军,程序员国服三强谁的编程能力最牛?
  12. 让VMware功能增強的三款辅助工具
  13. 传统银行票据打印系统几个关键技术点简要分析
  14. NX/UG二次开发—CAM—刀轨转曲线(支持圆弧和直线)
  15. 简单的朴素贝叶斯算法实现英文文本分类(Python实现)
  16. [HNOI2009] 图的同构
  17. Failed to install the following Android SDK packages as some licences have not been accepted.
  18. 图形化开发(五)042-Three.js之Camera相机——正交相机和透视相机的对比
  19. 利用BeautifulSoup爬取豆瓣高分电影排行榜
  20. 软件配置管理(SCM)

热门文章

  1. 物联网终端安全系列(之三) -- 物联网终端安全解决方案概述
  2. 水星逆行对股市涨跌的实证检验
  3. 读书笔记 摘自:《亲密关系:通往灵魂的桥梁(张德芬译)》的笔记(作者: 【加】克里斯多福·孟)
  4. 【c语言】算数转换解析+试题
  5. 现代操作系统 第一章 引论
  6. 3.5.1_2 Maven - pom.xml 添加maven-assembly-plugin(官方标准打包插件)
  7. 通过read_excel打开xls文件时,报错struct.error: unpack requires a bytes object of length 2
  8. react routers路由地址 F5刷新白屏
  9. java fup spring
  10. aso优化应用市场推广方案到底怎么写