C++中如果需要中途退出程序,exit(1)和exit(0)以及return有什么区别呢?
exit(1)和_exit(0)函数都可以用于结束进程,不过_exit(1)调用之后会立即进入内核,而exit(0)函数会先执行一些清理之后才会进入内核,比如调用各种终止处理程序,关闭所有I/O流.
return 是退出函数模块并返回值给调用该函数的操作数,所以函数前要有返回类型,如果是用在main函数中的话,main函数返回值不能声明成void,那么此时的return与exit调用都是使程序结束并返回到操作系统。
return函数退出,将函数的信息返回给调用函数使用,与exit()和_exit()函数有本质区别。
#include <stdlib.h>
void exit(int status);
DESCRIPTION
The exit() function causes normal process termination
and the value of status & 0377 is returned to the parent
(see wait(2)).
这是man手册中对exit()函数的秒数,exit()函数导致子进程的正常退出,并且参数status&0377这个值将被返回给父进程。exit()应该是库函数。exit()函数其实是对_exit()函数的一种封装(库函数就是对系统调用的一种封装)。
3.return 不是系统调用,也不是库函数,而是一个关键字,表示调用堆栈的返回(过程活动记录),是函数的退出,而不是进程的退出。