Provided by: manpages-zh_1.5.1-1_all bug

NAME

       exit - 使程序正常中止

SYNOPSIS览
       #include <stdlib.h>

       void exit(int status);

DESCRIPTION述
       函数  exit()  使得程序正常中止,status  & 0377 的值被返回给父进程 (参见
       wait(2))         。所有用         atexit()on_exit()
       注册的函数都以与注册时相反的顺序被依次执行。使用              tmpfile()
       创建的文件被删除。

       C  标准定义了两个值  EXIT_SUCCESSEXIT_FAILURE,可以作为   exit()
       的参数,来分别指示是否为成功退出。

RETURN VALUE值
       函数 exit() 不会返回。

CONFORMING TO考
       SVID 3, POSIX, BSD 4.3, ISO 9899 (``ANSI C'')

NOTES点
       在     exit     处理过程中,可能会使用     atexit()on_exit()
       注册其他的函数。通常,最后注册的函数被从已注册函数链中摘下来,然后执行。如果在处理过程中,又调用了
       exit()longjmp(),那么发生的行为是未定义的。

       相对于使用  0  和非零值  1  或  -1,使用  EXIT_SUCCESS  和 EXIT_FAILURE
       可以稍微增加一些可移植性      (对非       Unix       环境)。特别的,VMS
       使用一种不同的约定。

       BSD 试图标准化退出代码 - 参见文件 <sysexits.h>exit()
       之后,退出状态必须传递给父进程。这里有三种情况。如果父进程已设置了
       SA_NOCLDWAIT,或者已将            SIGCHLD            的处理句柄设置成了
       SIG_IGN,这个状态将被忽略。这时要退出的进程立即消亡。如果父进程没有表示它对退出状态不感兴趣,仅仅是不再等待,那么要退出的程序变成一个僵尸进程
       (``zombie'',除了包含一个字节的退出状态外,什么也不是)。这样在父进程后来调用
       wait() 函数族之一时,可以得到退出状态。

       如果所用实现支持 SIGCHLD 信号,信号将被发送到父进程。如果父进程已设置了
       SA_NOCLDWAIT,它被取消定义。(?)

       如果进程是一个                                                  session
       leader,它的控制终端是会话的控制终端,那么这个终端的前台进程组的每个进程都将收到
       SIGHUP 信号;终端将与这个会话断开,可以再被一个新的控制进程获得。

       如果进程的退出使得一个进程组成为孤儿,并且这个新近成为孤儿的进程组中任何的进程被中止,进程组中所有的进程将依次收到
       SIGHUP 和 SIGCONT 信号。

SEE ALSO见
       _exit(2), wait(2), atexit(3), on_exit(3), tmpfile(3)

                                  2001-11-17                           EXIT(3)