Cygwin: mmap: allow remapping part of an existing anonymous mapping
[newlib-cygwin.git] / newlib / libc / stdlib / exit.c
blob9b7bd518bb875cf285e157128d3ec0ec50741343
1 /*
2 * Copyright (c) 1990 Regents of the University of California.
3 * All rights reserved.
5 * %sccs.include.redist.c%
6 */
8 /*
9 FUNCTION
10 <<exit>>---end program execution
12 INDEX
13 exit
15 SYNOPSIS
16 #include <stdlib.h>
17 void exit(int <[code]>);
19 DESCRIPTION
20 Use <<exit>> to return control from a program to the host operating
21 environment. Use the argument <[code]> to pass an exit status to the
22 operating environment: two particular values, <<EXIT_SUCCESS>> and
23 <<EXIT_FAILURE>>, are defined in `<<stdlib.h>>' to indicate success or
24 failure in a portable fashion.
26 <<exit>> does two kinds of cleanup before ending execution of your
27 program. First, it calls all application-defined cleanup functions
28 you have enrolled with <<atexit>>. Second, files and streams are
29 cleaned up: any pending output is delivered to the host system, each
30 open file or stream is closed, and files created by <<tmpfile>> are
31 deleted.
33 RETURNS
34 <<exit>> does not return to its caller.
36 PORTABILITY
37 ANSI C requires <<exit>>, and specifies that <<EXIT_SUCCESS>> and
38 <<EXIT_FAILURE>> must be defined.
40 Supporting OS subroutines required: <<_exit>>.
43 #include <stdlib.h>
44 #include <unistd.h> /* for _exit() declaration */
45 #include <reent.h>
46 #include "atexit.h"
49 * Exit, flushing stdio buffers if necessary.
52 void
53 exit (int code)
55 #ifdef _LITE_EXIT
56 /* Refer to comments in __atexit.c for more details of lite exit. */
57 void __call_exitprocs (int, void *) __attribute__((weak));
58 if (__call_exitprocs)
59 #endif
60 __call_exitprocs (code, NULL);
62 if (__stdio_exit_handler != NULL)
63 (*__stdio_exit_handler) ();
65 _exit (code);