exit和return区别

From: http://blog.163.com/liuqiang_mail@126/blog/static/109968875201241210473787/

退出和返回
退出状态(exit status)
函数返回一个被称为退出状态的值. 退出状态可以由return 来指定statement, 否则函数的
退出状态是函数最后一个执行命令的退出状态(0 表示成功,非0 表示出错代码). 退出状态
(exit status)可以在脚本中由$? 引用. 这个机制使脚本函数也可以像C 函数一样有一个"
返回值".
return
终止一个函数.return 命令[1]可选地带一个整数参数,这个整数作为函数的"返回值"返回
给调用此函数的脚本,并且这个值也被赋给变量$?.

exit函数和return函数的主要区别是:

1)exit用于在程序运行的过程中随时结束程序,其参数是返回给OS的。也可以这么讲:exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。

main函数结束时也会隐式地调用exit函数,exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。

exit是系统调用级别的,它表示了一个进程的结束,它将删除进程使用的内存空间,同时把错误信息返回父进程。通常情况:exit(0)表示程序正常, exit(1)和exit(-1)表示程序异常退出,exit(2)表示系统找不到指定的文件。

 2)return是语言级别的,它表示了调用堆栈的返回;return是返回函数值并退出函数,通常0为正常退出,非0为非正常退出,请注意,如果是在主函数main, 自然也就结束当前进程了(也就是说,在main()里面,你可以用return n,也能够直接用exit(n)来做),如果不是在main函数中,那就是退回上一层调用。在多个进程时,如果有时要检测上个进程是否正常退出,就要用到上个进程的返回值。

 2、进程环境与进程控制

如果exit(int n)是在main函数里被调用的,那么exit(int n)就直接退出程序,并返回一个int型的值。一般在shell下面,运行一个程序,然后使用命令echo $?就能得到该程序的返回值,也就是退出值。理论上exit可以返回小于256的任何整数,返回的不同数值主要是给调用者作不同处理的。

对于单独的进程exit的返回值是返回给操作系统的,但如果是多进程,则是返回给父进程的。父进程里面调用waitpid()等函数得到子进程退出的状态,以便作不同处理。根据相应的返回值来让调用者作出相应的处理。

总的说来,exit(int n)就是当前进程把其控制权返回给调用该子程序的主程序, 括号里的是返回值,告诉调用程序该程序的运行状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] react中什么是受控组件?

[react] react中什么是受控组件? 表单元素的value/checked值与state绑定,同时表单元素的onChange可以动态的改变对应的state的值,即数据的变更可以更新视图,用户操作视图的更新也可以触发state数据的更新. import React from re…

SQL Server--用户自定义函数

除了使用系统提供的函数外,用户还可以根据需要自定义函数。用户自定义函数是 SQL Server 2000 新增的数据库对象,是 SQL Server 的一大改进。与编程语言中的函数类似,Microsoft SQL Server 用户定义函数是接受参数、执行操作(例如…

c语言exit和return区别,在fork和vfork中使用

From: http://www.cnblogs.com/laojie4321/archive/2012/03/31/2426910.html exit函数在头文件stdlib.h中。 exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序;…

[react] 说说你对“在react中,一切都是组件”的理解

[react] 说说你对“在react中,一切都是组件”的理解 React采用组件化的思想,最小的组件单位就是原生HTML元素,采用JSX的语法声明组件的调用React的虚拟DOM,就是一个大的组件树,从父组件层到子组件,在rende…

DWT算法

C写的DWT算法转载于:https://blog.51cto.com/yerik/764890

gcc 编译选项

From: http://blog.csdn.net/guogeer/article/details/7407508 [html] view plaincopy下列选项控制编译器警告信息: --all-warnings 此开关缺少可用文档 --extra-warnings 此开关缺少可用文档 -W 不建议使用此开关…

[react] react中的key有什么作用?

[react] react中的key有什么作用? react利用key来识别组件,它是一种身份标识标识,就像我们的身份证用来辨识一个人一样。每个key对应一个组件,相同的key react认为是同一个组件,这样后续相同的key对应组件都不会被创建…

【转】ps命令详解

原文地址:http://apps.hi.baidu.com/share/detail/32573968 有 时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所以在同等情况下,进程的数 量要比程序多的多。为此从…

Amazon S3 设置对象的生命周期Lifecycle

2019独角兽企业重金招聘Python工程师标准>>> 保存在S3上面的文件,有些是长期保存的,而有一些我们却不希望保存太久,过一段时间后就可以删除了。例如备份文件,太旧的就要删除;又或如日志文件,只保…

[react] react非父子组件如何通信?

[react] react非父子组件如何通信? redux context 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

fatal error C1083: 无法打开包括文件:dxtrans.h: No such file or directory

From: http://blog.csdn.net/pkueecser/article/details/7287938 fatal error C1083: 无法打开包括文件:"dxtrans.h": No such file or directory http://blog.waterlin.org/articles/qedit-problem-in-windows-directshow.html 在使用有关 DirectShow 东西的时…

开灯问题---------简单模拟

有n盏灯,编号为1~n,第一个人把所有灯都打开,第2个人按下所有编号为2的倍数的开关(这些灯将会被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭)…

[react] react中遍历时为什么不用索引作为唯一的key值?

[react] react中遍历时为什么不用索引作为唯一的key值? key值的目的在Diff DOM的时候根据render前后的唯一key值快速的对树进行比较,保证key值得唯一性,如在进行中间插入或者最顶上插入时,算法会很明显得知道这是一个插入动作&am…

TortoiseGit + GitHub 快速上手指南

TortoiseGit GitHub 快速上手指南 名词解释: 1. TortoiseGit 是 TortoiseSVN的Git版,它很好的实现了与windows资源管理器的融合,使用界面与TortoiseSVN非常类似。 2. TortoiseGit运行在msysgit(git的windows开源版本)之上,因此,在…

无法访问windows安装服务的解决

From: http://www.cnblogs.com/huangweilin/archive/2012/12/20/2826032.html 一、问题的提出 一部计算机,要安装类似ofiice的软件,提示无法访问windows安装服务的解决,要卸载类似office的软件,也提示无法访问windows安装服务的…

VMware Fusion8下CentOS7.1 安装vmtools报错kernel header path

VMware Fusion8CentOS7.1安装vmtools ---找不到gcc和kernel header path的解决办法 环境: OSX 10.11.2 VMware Fusion 8.0.2 CentOS 7.1 错误: 1.gcc错误 Searching for GCC...The path "" is not valid path to the gcc binary. 2.内核头文件问题 Searching for a v…

[react] 说说你对reader的context的理解

[react] 说说你对reader的context的理解 这个题想问的应该是render函数的上下文,而非React.createContext的那个Context。 不管是class组件还是函数式组件,React的组件本质上都是函数,从根组件到下面大大小小的子组件,React组件树…

Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow

所谓HDR就是高动态范围的意思。在普通的显示器和位图里,每通道都是8-bit,也就是说RGB分量的范围都是0-255,这用来表示现实中的颜色显然是远远不够的。现实中的图像的动态范围远远大的多,那么如何在现有的显示设备里尽可能的保持更…

[react] react中什么是非控组件?

[react] react中什么是非控组件? 表单元素的value/checked值、onChange事件没有和组件的state存在绑定关联关系,如果需要获取表单元素的值,需要使用ref获取DOM,然后得到元素的值.demo如下: import React from react;…

[spring-framework]Spring定时器的配置和使用

开发中我们常常会做一些定时任务&#xff0c;这些任务有开始时间&#xff0c;并会按一定的周期或规则执行。如此我们在Java程序开发中使用定时器来处理定时任务。 <!-- MessageRequestTask类中包含了msgRequest方法&#xff0c;用于执行定时任务 --> <bean id"ms…