首先看一张apue上的图:
exit函数和_Exit函数是标准C库中的函数
#include<stdlib.h>
void exit(int status);
void _Exit(int status);
_exit是一个系统调用
#include<unistd.h>
void _exit(int status);
三个exit函数中的status表示终止状态(exit status)。如果(a)若调用这些函数时不带终止状态,或(b)main执行了一个无返回值的return语句,或(C)main没有声明返回类型为整型,则该进程的终止状态是未定义的。但是,若main函数的返回类型是整型,并且main执行到最后一条语句时返回(隐式返回),那么该进程的终止状态是0。另外,main函数返回一整型值与用该值调用exit函数是等价的,即main函数中exit(0)等价于return(0)。
exit函数由ISO定义,其操作包括调用各终止处理程序,然后关闭所有标准I/O流。
_Exit函数由ISO定义,其目的是为进程提供一种无需运行终止处理程序或信号处理程序而终止的方法。对标准I/O流是否冲洗,这取决于实现。在Unix系统中,_Exit和_exit是同义的,并不清洗标准I/O流。_exit由exit函数调用,他处理Unix特定的细节。