编辑shell
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
int
main(
int
argc,
char
*argv[])
{
int
status;
printf
(
"Enter either 1 or 2\n"
);
status=getch();
/*Sets DOS error level*/
exit
(status-
'0'
);
/*Note:this line is never reached*/
return
0;
}
|
exit(0):正常运行程序并退出程序;数据库
exit(1):非正常运行致使退出程序;windows
return():返回函数,若在主函数中,则会退出函数并返回一值。数据结构
详细说:函数
1. return返回函数值,是关键字; exit 是一个函数。this
2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
3. return是函数的退出(返回);exit是进程的退出。spa
4. return是C语言提供的,exit是操做系统提供的(或者函数库中给出的)。操作系统
5. return用于结束一个函数的执行,将函数的执行信息传出个其余调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操做系统有关,通常是 0 为正常退出, 非0 为非正常退出。code
6. 非主函数中调用return和exit效果很明显,可是在main函数中调用return和exit的现象就很模糊,多数状况下现象都是一致的。
继承
exit(0)与exit(1)对你的程序来讲,没有区别。对使用你的程序的人或者程序来讲,区别可就大了。通常来讲,exit 0 能够告知你的程序的使用者:你的程序是正常结束的。若是 exit 非 0 值,那么你的程序的使用者一般会认为你的程序产生了一个错误。以 shell 为例,在 shell 中调用完你的程序以后,用 echo $? 命令就能够看到你的程序的 exit 值。在 shell 脚本中,一般会根据上一个命令的 $? 值来进行一些流程控制。