exit.c

来自「cygwin, 著名的在win32下模拟unix操作系统的东东」· C语言 代码 · 共 84 行

C
84
字号
/* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * %sccs.include.redist.c% *//*FUNCTION<<exit>>---end program executionINDEX	exitANSI_SYNOPSIS	#include <stdlib.h>	void exit(int <[code]>);TRAD_SYNOPSIS	#include <stdlib.h>	void exit(<[code]>)	int <[code]>;DESCRIPTIONUse <<exit>> to return control from a program to the host operatingenvironment.  Use the argument <[code]> to pass an exit status to theoperating environment: two particular values, <<EXIT_SUCCESS>> and<<EXIT_FAILURE>>, are defined in `<<stdlib.h>>' to indicate success orfailure in a portable fashion.<<exit>> does two kinds of cleanup before ending execution of yourprogram.  First, it calls all application-defined cleanup functionsyou have enrolled with <<atexit>>.  Second, files and streams arecleaned up: any pending output is delivered to the host system, eachopen file or stream is closed, and files created by <<tmpfile>> aredeleted.RETURNS<<exit>> does not return to its caller.PORTABILITYANSI C requires <<exit>>, and specifies that <<EXIT_SUCCESS>> and<<EXIT_FAILURE>> must be defined.Supporting OS subroutines required: <<_exit>>.*/#include <stdlib.h>#include <unistd.h>	/* for _exit() declaration */#include <reent.h>#ifndef _REENT_ONLY/* * Exit, flushing stdio buffers if necessary. */void _DEFUN (exit, (code),	int code){  register struct _atexit *p;  register int n;  int i = 1;#ifdef _REENT_SMALL  for (p = &_REENT->_atexit, n = p->_ind-1, i = (n>=0) ? (1<<n) : 0;        n >= 0; --n, i >>= 1)#else  for (p = _REENT->_atexit; p; p = p->_next)    for (n = p->_ind - 1, i = (n >= 0) ? (1 << n) : 0; n >= 0; --n, i >>= 1)#endif      if (p->_fntypes & i)        (*((void (*)(int, void *))p->_fns[n]))(code, p->_fnargs[n]);      else        (*p->_fns[n]) ();  if (_REENT->__cleanup)    (*_REENT->__cleanup) (_REENT);  _exit (code);}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?