exit() 和 return

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的现象就很模糊,多数情况下现象都是一致的。

C++中 exit() 与 return 表现出的区别

exit():

代码
#include <iostream>
using namespace std;
class Temp
{
public:
    Temp(){cout<<"Constructor!"<<endl;}
    ~Temp(){cout<<"Destructor!"<<endl;}
};
int main()
{
    Temp t;
    exit(0) ;
}

Constructor!
Press any key to continue

return:

代码
#include <iostream>
using namespace std;
class Temp
{
public:
    Temp(){cout<<"Constructor!"<<endl;}
    ~Temp(){cout<<"Destructor!"<<endl;}
};
int main()
{
    Temp t;
    return 0;
}

Constructor!
Destructor!
Press any key to continue

综上:

exit()退出程序,把控制权交给OS
return结束当前函数,返回函数值,把控制权交给调用函数
在main函数中return 与exit用法差不多,但return会自动调用对象的析构函数, 而exit不会

C/C++ 中 exit() 函数的参数有什么意义 (转自知乎)

问:

1)我知道0表示正常退出,非0表示错误退出,但是这参数究竟有什么意义呢?

2)据说面向对象中不建议使用exit()函数,如果是,这是为什么呢,又该用什么方法替换呢?

答:

C 语言的设计之初就是为 Unix 系统设计的,而这个系统是『很多程序互相配合』搭配成一个系统。

每个运行着的程序都是进程,而进程就会有父进程,父进程通常是直接启动你的进程,父进程死亡的进程会被 init 收养,其父进程变为 init,而 init 的父进程是进程 0,进程 0 则是系统启动时启动的第一个进程。

exit() 里面的参数,是传递给其父进程的。对父进程来说,你的进程就像是一个函数,而函数可以有返回值。

1)这个参数有什么意义:

exit() 的参数,是给自己的父进程使用的。通常一个程序的父进程可能是任何进程,因此我们无法预期我们的父进程是否规定必须要有这个返回值,那么我们应当提供这个返回值,以保证不同的父进程的需求得到满足。

一个典型的例子是 make,Makefile 对于一个 target 下面有多条顺序执行的语句,而 make 作为父进程,会检查每个语句的返回值是否为 0 ,遇到任何一个非 0 值,都会停止当前 rule 的执行。而我们知道,make 实际上可以执行任何命令任何程序,因而任何被 make 调用的程序必须有正确的返回值。

2)为什么要使用 exit() 函数:

事实上在大部分系统里,main 函数都不是应用程序的真正入口点。

真正入口点是 C 运行库里的一个函数,那个函数要负责先做一些初始化工作,然后才调用 main。main 返回到运行库里的入口函数后,它还要做一些善后工作。

如果有任何一个平台必须调用 exit 才能正常退出,那这个平台就一定会把 exit 封装在 C 运行库里,让 main 返回的时候调用 exit 实现「正常退出」。

exit 函数存在的价值是在你不想或不愿意返回 main 的时候直接在某嵌套函数中终止程序的运行。至于这样的做法好还是不好,那就是另外一个问题了。反正我个人是很反感「结束在调用栈中」这样的退出方式的。

时间: 2024-10-10 07:04:01

exit() 和 return的相关文章

exit()和return的区别

exit()和return的区别: 按照ANSI C,在最初调用的main()中使用return和exit()的效果相同. 但要注意这里所说的是“最初调用”.如果main()在一个递归程序中,exit()仍然会终止程序:但return将 控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序.return和exit()的另一个区别 在于,即使在除main()之外的函数中调用exit(),它也将终止程序. _exit()与exit的区别: 头文件: exit:#include<s

exit与return的深入辨析

 1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数. 2. exit是系统调用级别,它表示一个进程的结束:而return 是语言级别的,它表示调用堆栈的返回. 3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程.exit将删除进程使用的内存空间,同时把错误信息返回给父进程. 4. void exit(int status); 一般statu

exit和return

函数名: exit() 所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h) 功 能: 关闭所有文件,终止正在执行的进程. exit(1)表示异常退出.这个1是返回给操作系统的. exit(x)(x不为0)都表示异常退出 exit(0)表示正常退出 exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用. stdlib.h: void exit(int status); 参 数 : status //程序退出的返回值

exit和return的区别

1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数. 2. exit是系统调用级别,它表示一个进程的结束:而return 是语言级别的,它表示调用堆栈的返回. 3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程.exit将删除进程使用的内存空间,同时把错误信息返回给父进程. 4. void exit(int status); 一般status为0

Linux进程退出--exit与return的区别

通过fork()函数来创建一个进程,那么如何终止一个进程呢? 进程的退出分为正常退出和异常退出: 正常退出: 1).在main()函数执行return. 2).调用exit()函数 3).调用_exit()函数 异常退出可能调用某种函数也可能收到某种信号. 现在只讨论正常退出: (1)exit和return 的区别: a.exit是一个函数,有参数.exit执行完后把控制权交给系统 b.return是函数执行完后的返回.renturn执行完后把控制权交给调用函数. exit()和_exit()

exit 与 return的区别

当用vfork()创建子进程时,如果用exit()退出,则结果正常,若用return退出,则会导致异常. 下面来分析为什么会这样,以及exit()和return的区别. 源代码:   1 #include<stdio.h>   2 #include<sys/types.h>   3 #include<unistd.h>   4 int main()   5 {   6     pid_t id = vfork();   7     if(id<0)   8    

linux之Deamon进程创建及其进程exit,_exit,return之间的区别

Dameon进程又被称做守护进程,一般来说他有以下2个特点: 1.生命周期非常长,一旦启动,一般不会终止,直到系统推出,不过dameon进程可以通过stop或者发送信号将其杀死 2.在后台执行,不跟任何控制终端关联,终端信号比如:SIGINT,SIGQUIT,SIGTSTP,以及关闭终端都不会影响deamon 如何编写Daemon进程,需要遵循以下规则: (1)执行fork()函数,父进程退出,子进程继续 执行这一步,原因有二: ·父进程有可能是进程组的组长(在命令行启动的情况下),从而不能够执

C++ exit 与 return 浅析

[摘要] 本文从代码形式.经常使用方式,相关概念,调用关系和比較分析,这5个维度浅析 exit 与 return 在C++的同样点与差别. [常见形式] exit(0):   正常执行程序并退出程序. exit(1):   非正常执行导致退出程序: return( ):返回函数,若在主函数中,则会退出函数并返回一值. [相关概念] return 语句可被用来使正在执行分支程序返回到调用它方法.表示中止当前函数的执行.并将操作权返回给调用者,假设是在main函数中.表示将操作权返回给操作系统. 假

php exit、return、break、continue之间的区别,详细介绍

相信大家在php开发中有几个常用的停止程序和循环的关键字的误区( exit.return.break.continue) exit 退出所有脚本,是个函数 return 语言结构的用法---作用:终止函数的执行和从函数中返回一个值 break 结束当前 for,foreach,while,do..while 或者 switch 结构的执行(break 可以接受一个可选的数字参数来决定跳出几重循环) continue 在循环结构中用来跳过本次循环中剩余的代码并开始执行本循环结构的下一次循环.( 接