欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

exit与return的区别

程序员文章站 2022-07-13 23:34:02
...

exit(0):正常运行程序并退出程序。
exit(1):非正常运行导致退出程序;
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()
所在头文件: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

相关标签: C 底层