exit与return的区别 exit(1)、exit(-1)和exit(0)区别

简介: exit与return的区别 exit(1)、exit(-1)和exit(0)区别

exit();  是整个程序的结束。

exit(0):正常运行程序并退出程序;


exit(1):非正常运行导致退出程序;


exit(1)、exit(-1)和exit(0)区别

exit(1)、exit(-1)是分别返回1和-1到主调程序。


exit(0)则是返回0。


exit(0)表示程序正常退出,非0表示非正常退出。


return();是某个函数的结束,并返回结果。

 1. return返回函数值,是关键字;  exit 是一个函数。


 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。

 3. return是函数的退出(返回);exit是进程的退出。


 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。


 5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。


 6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。


exit和_exit

进程终止有5种方法:


1. 正常终止


(1)从main函数返回


(2)调用exit


(3)调用_exit


2. 异常终止


(1)调用abort


(2)由一个信号来终止


exit和_exit就是用来正常终止一个进程的,主要区别是_exit会立刻进入内核,而exit先执行一些清除工作(包括执行各种终止处理程序,关闭所有标准I/O等,一旦关闭了IO,例如Printf等函数就不会输出任何东西了),然后才进入内核。这两个函数会对父子进程有一定的影响,当用vfork创建子进程时,子进程会先在父进程的地址空间运行(这跟fork不一样),如果子进程调用了exit就会把父进程的IO给关掉。


这两个函数都带一个参数表示终止状态,这跟我们平时写的return效果是一样的,如果不返回一个终止状态,那表示这个进程的终止状态就是未定义的。

相关文章
|
Rust 算法 安全
【密码学】一文读懂MurMurHash2
上次我们聊过了一代的MurMurHash算法,是的,我又来水文章了,今天呢,接着来聊一下二代的MurMurHash算法,二代算法的整体结构实际上和一代算法差不太多,只是对于每一轮数据的处理过程当中的运算有一些差异,算法的来源依然是来自于Google官网给提供的源码,对着源码看的结构,对于这个算法呢,有两个版本,一个是32位的,一个是64位的,对于32位的算法和64位的算法,区别在于两个初始的魔数不同,整体运算过程还是十分相似的。
3314 0
【密码学】一文读懂MurMurHash2
|
设计模式 缓存 前端开发
什么是幂等性?四种接口幂等性方案详解!
本文深入分布式系统中的幂等性问题及其解决方案,涵盖数据库唯一主键、乐观锁、PRG模式和防重Token等方法,关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
什么是幂等性?四种接口幂等性方案详解!
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
638 15
|
缓存 索引
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
1407 0
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】机器学习、深度学习、强化学习和迁移学习简介、相互对比、区别与联系。
机器学习、深度学习、强化学习和迁移学习都是人工智能领域的子领域,它们之间有一定的联系和区别。下面分别对这四个概念进行解析,并给出相互对比、区别与联系以及应用场景案例分析。
1438 1
|
安全 网络协议 网络虚拟化
|
传感器 网络协议 网络架构
计算机网络基础教程:拓扑
【4月更文挑战第5天】
2496 9
 计算机网络基础教程:拓扑
|
Linux 网络安全 数据安全/隐私保护
VsCode SSH远程设置不用重复输入密码
VsCode SSH远程设置不用重复输入密码
|
Linux Shell
Linux中system函数
Linux中system函数
1019 0