免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1089 | 回复: 1
打印 上一主题 下一主题

请教一下exit函数! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-21 09:38 |只看该作者 |倒序浏览
在读程序的时候,经常会看到exit函数,例如exit(0),exit(-1),exit(-2)等,
它们各自代表什么意思呢,之间的区别是什么?

论坛徽章:
0
2 [报告]
发表于 2006-08-21 09:42 |只看该作者
EXIT(3)                              Linux Programmer’s Manual                             EXIT(3)

NAME
       exit - cause normal process termination

SYNOPSIS
       #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)).

       All functions registered with atexit() and on_exit() are called, in the  reverse  order  of
       their  registration.   (It  is  possible  for  one  of  these  functions to use atexit() or
       on_exit() to register an additional function to be executed during exit processing; the new
       registration is added to the front of the list of functions that remain to be called.)

       All open streams are flushed and closed.  Files created by tmpfile() are removed.

       The  C  standard specifies two constants, EXIT_SUCCESS and EXIT_FAILURE, that may be passed
       to exit() to indicate successful or unsuccessful termination, respectively.

RETURN VALUE
       The exit() function does not return.

CONFORMING TO
       SVID 3, POSIX, 4.3BSD, ISO 9899 (‘‘ANSI C’’)

NOTES
       It is undefined what happens  if  one  of  the  functions  registered  using  atexit()  and
       on_exit() calls either exit() or longjmp().

       The  use  of  EXIT_SUCCESS and EXIT_FAILURE is slightly more portable (to non-Unix environ‐
       ments) than that of 0 and some non-zero value like 1 or -1. In particular, VMS uses a  dif‐
       ferent convention.
       BSD has attempted to standardize exit codes; see the file <sysexits.h>.

       After  exit(),  the  exit status must be transmitted to the parent process. There are three
       cases. If the parent has set SA_NOCLDWAIT, or has set the SIGCHLD handler to  SIG_IGN,  the
       status is discarded. If the parent was waiting on the child it is notified of the exit sta‐
       tus. In both cases the exiting process dies immediately. If the parent  has  not  indicated
       that it is not interested in the exit status, but is not waiting, the exiting process turns
       into a "zombie" process (which is nothing but a container for the single byte  representing
       the  exit  status)  so that the parent can learn the exit status when it later calls one of
       the wait() functions.

       If the implementation supports the SIGCHLD signal, this signal is sent to  the  parent.  If
       the parent has set SA_NOCLDWAIT, it is undefined whether a SIGCHLD signal is sent.

       If the process is a session leader and its controlling terminal is the controlling terminal
       of the session, then each process in the foreground process group of this controlling  ter‐
       minal  is sent a SIGHUP signal, and the terminal is disassociated from this session, allow‐
       ing it to be acquired by a new controlling process.

       If the exit of the process causes a process group to become orphaned, and if any member  of
       the  newly  orphaned  process  group is stopped, then a SIGHUP signal followed by a SIGCONT
       signal will be sent to each process in this process group.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP