Provided by: manpages-zh_1.5.2-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)