exit(0):正常运行程序并退出程序。
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值。
拓展知识:
- return返回函数值,是关键字; exit 是一个函数。
- return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
- return是函数的退出(返回);exit是进程的退出。
- return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
- return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS(操作系统),这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。
- 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。
Exit() 是一个函数。
函数名: exit()
所在头文件:stdlib.h
功 能: 关闭所有文件,终止正在执行的进程。
exit(1)表示异常退出.这个1是返回给操作系统的。
exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用。
stdlib.h: void exit(int status);
参 数 : status //程序退出的返回值.
exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件,最后调用_exit系统函数。
进程终⽌的⽅式有8种,前5种为正常终⽌,后三种为异常终⽌:
1 从main函数返回;
2 调⽤exit函数;
3 调⽤_exit或_Exit;
4 最后⼀个线程从启动例程返回;
5 最后⼀个线程调⽤pthread_exit;
6 调⽤abort函数;
7 接到⼀个信号并终⽌;
8 最后⼀个线程对取消请求做出响应。
/*例子一:在调用函数中return 0*/
#include<stdio.h>
int fun()
{
return 0;//调用return会把返回值返回到函数调用处,但不会使整个进程退出
}
int main()
{
fun();
printf("haha");
return 0;
}
运行结果:打印haha
/*例子二:在调用函数中调用exit(0)*/
#include<stdio.h>
#include<stlib.h>
int fun()
{
exit(0);//调用exit()导致整个进程退出,整个程序退出
}
int main()
{
fun();
printf("haha");
return 0;
}
运行结果:不打印haha
/*例子三:在主函数中return 0*/
#include<stdio.h>
#include<stlib.h>
int main()
{
return 0; //在主函数中调用return 相当于exit(0),主进程退出,不再顺序执行语句
printf("haha");
}
运行结果:不打印haha