main 函数中使用 return 后返回,return 执行后把控制权交给调用函数,结束该进程。调用_exit()函数会清除其使用的内存空间,并销毁其在内核中的各种数据结构,关闭进程的所有文件描述符,并结束进程、将控制权交给操作系统。
_exit()函数原型如下所示:
#include
void _exit(int status);
调用函数需要传入 status 状态标志,0 表示正常结束、若为其它值则表示程序执行过程中检测到有错误发生。使用示例如下:
#include
#include
#include
#include
#include
int main(void)
{
int fd;
/* 打开文件 */
fd = open("./test_file", O_RDONLY);
if (-1 == fd)
{
perror("open error");
_exit(-1);
}
close(fd);
_exit(0);
}
_Exit()函数原型如下所示:
#include
void _Exit(int status);
_exit()和_Exit()两者等价,用法作用是一样的,这 2 个函数都是系统调用。
exit()函数_exit()函数都是用来终止进程的,exit()是一个标准 C 库函数,而_exit()和_Exit()是系统调用。
执行 exit()会执行一些清理工作,最后调用_exit()函数。exit()函数原型如下:
#include
void exit(int status);
exit(0),exit(1) 和 exit(-1)的区别
exit(0) 表示程序正常退出;除了0之外,其他参数均代表程序异常退出,如:exit(1),exit(-1)。
exit(1) 和exit(-1) 是分别返回1和-1到主调程序。exit(0)则是返回0。exit(0)表示程序正常退出,非0表示非正常退出。
return与exit的区别
return是语言级别的,它表示了调用堆栈的返回;
exit是系统调用级别的,它表示了一个进程的结束。
该函数是一个标准 C 库函数,使用该函数需要包含头文件