功能:

  • _exit() :退出程序。
  • exit(0):运行正常退出程序;
  • exit(1):运行异常退出程序;
  • return():返回函数,若在主函数中,则会退出函数并返回值。

_exit() 和 exit() 区别:

  • exit()会将缓冲区的数据写完再结束进程到内核中去(退出进程会清理I/O缓冲区)。
  • _exit() 直接结束进程进入到内核中。
  • exit() 函数定义在 stdlib.h 中,_exit() 定义在 unistd.h 中。
  • 图示:

示例:

_exit()

#include <stdio.h>
#include <unistd.h>int main(void) { printf("hello\n");printf("OK");   _exit(0);
}

输出结果:

hello

exit()

#include <stdio.h>
#include <stdlib.h>int main(void) { printf("hello\n");printf("OK");   exit(0);
}

输出结果:

hello
OK

原因:

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

exit() 将缓冲区的数据写完后才能退出来,所以调用exit()函数后程序并不会马上退出,会把OK也输出出来。

_exit() 是直接退出进入到内核中了。

exit(0) 和 exit(1) 区别:

  • exit(0):运行正常退出程序;
  • exit(1):运行异常退出程序,返回值1是返回给操作系统的;

return 和 exit() 区别:

  • return 是关键字;exit() 是函数。
  • return 是语言级别的,表示调用堆栈的返回;而 exit() 是系统调用级别的,表示进程的结束。
  • return 是退出(返回)函数,将控制权移交给递归的前一级;exit() 是直接退出进程。
  • 在最初调用的main函数中调用return和exit的现象很模糊,非主函数中调用return和exit效果很明显。

参考:

https://blog.csdn.net/yyfwd/article/details/50548359

https://www.cnblogs.com/ECJTUACM-873284962/p/6882448.html#autoid-0-0-0

https://baike.so.com/doc/6759674-6974306.html

https://blog.csdn.net/qq_23929673/article/details/99670478

【Linux】_exit()、exit(0)、exit(1)与return区别详解相关推荐

  1. linux中cat、more、less命令区别详解

    linux中cat.more.less命令区别详解 转自:https://blog.csdn.net/xyw_blog/article/details/16861681 众所周知linux中命令cat ...

  2. linux revert,git revert和git reset的区别详解

    git revert和git reset的区别 git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留 git reset 是回到某次提交,提交及之前的commi ...

  3. exit(0)与exit(1)、exit(-1)、return区别

    exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: exit(-1):非正常运行导致退出程序,与1类似: return():返回函数,若在主函数中,则会退出函数并返回一 ...

  4. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...

  5. linux top VIRT RES SHR SWAP DATA内存参数详解

    Linux top VIRT RES SHR SWAP DATA内存参数详解 其实很早之前就想开博客,写一写码农几年自己积攒下来的知识与见解.看过很多文章有过很多感触,有些收获很值得梳理一下认真思考反 ...

  6. linux Shell(脚本)编程入门实例讲解详解

    linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...

  7. linux系统四个组成部分,Linux系统由哪几部分组成?系统详解(干货)

    原标题:Linux系统由哪几部分组成?系统详解(干货) 我们常说的Linux一般指的是系统内核,基于Linux系统内核的操作系统叫Linux发行版操作系统,像redhat.centos.ubuntu和 ...

  8. 深入学习Linux摄像头(四)三星平台fimc驱动详解

    深入学习Linux摄像头系列 深入学习Linux摄像头(一)v4l2应用编程 深入学习Linux摄像头(二)v4l2驱动框架 深入学习Linux摄像头(三)虚拟摄像头驱动分析 深入学习Linux摄像头 ...

  9. Linux如何重启oracle监听,Linux下重启oracle服务及监听器和实例详解

    一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...

最新文章

  1. node-sass安装失败解决方法
  2. oracle大对象实例_Oracle解析复杂json的方法实例详解
  3. 海通证券签约神策数据 数据赋能构建数字化运营闭环
  4. NYOJ 116 士兵杀敌(二)
  5. linux shell脚本的执行方式与区别
  6. 更改apk安装包对android系统等级要求
  7. 大整数乘法c语言数组,很大的数相乘怎么办?
  8. 转载:如何规范地编写一个MATLAB函数文件
  9. mysql-debug: Thread stack overrun
  10. 深入浅出聊PLC技术,无线智能家居瞬间「不香了」?
  11. 音创ktv点歌linux系统下载,音创ktv点歌系统
  12. 基于Windows2003实现网关-网关虚拟专用网络
  13. 【深度学习之美】全面连接困何处,卷积网络见解深(入门系列之九)
  14. 腾讯游戏天美工作室实习感悟
  15. Xilinx Vivado复数乘法器Complex Multiplier IP核调用及其仿真
  16. AMD RDNA Architecture - AMD RDNA 架构
  17. 解决Maven打包没有依赖jar包问题
  18. 解决官网下载mysql过慢,快速下载mysql方法
  19. DP + 前缀和 - 牡牛和牝牛 - AcWing 1307
  20. unity实现AI对战坦克

热门文章

  1. 2021年CCCC天梯赛 L2清点代码库 (哈希表,数据结构)
  2. gbk编码程序如何设置linux系统,让linux支持gbk编码
  3. Alltesting众测平台招募兼职测试工程师,一边学测试,一边赚大钱
  4. 程序员面试常见问题-长期更新
  5. EasyDSS如何通过API接口调用指定时间段的录像播放视频?
  6. 南京工业大学计算机科学与技术分数线,南京工业大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  7. 直播APP的应用(使用七牛直播平台SDK和环信IM低仿映客)
  8. zz Android像素换算
  9. 512e 和 4kn的解读
  10. GitLab集成gitlab-runner