function
<cstdlib>
exit
[[noreturn]] void exit (int status);
Terminate calling process
Terminates the process normally, performing the regular cleanup for terminating programs.
Normal program termination performs the following (in the same order):
- Objects associated with the current thread with thread storage duration are destroyed (C++11 only).
- Objects with static storage duration are destroyed (C++) and functions registered with atexit are called.
- All C streams (open with functions in <cstdio>) are closed (and flushed, if buffered), and all files created with tmpfile are removed.
- Control is returned to the host environment.
Note that objects with automatic storage are not destroyed by calling exit (C++).
If status is zero or EXIT_SUCCESS, a successful termination status is returned to the host environment.
If status is EXIT_FAILURE, an unsuccessful termination status is returned to the host environment.
Otherwise, the status returned depends on the system and library implementation.
For a similar function that does not perform the cleanup described above, see quick_exit.
Parameters
- status
- Status code.
If this is 0
or EXIT_SUCCESS, it indicates success.
If it is EXIT_FAILURE, it indicates failure.
Return Value
none (the function never returns).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
/* exit example */
#include <stdio.h> /* printf, fopen */
#include <stdlib.h> /* exit, EXIT_FAILURE */
int main ()
{
FILE * pFile;
pFile = fopen ("myfile.txt","r");
if (pFile==NULL)
{
printf ("Error opening file");
exit (EXIT_FAILURE);
}
else
{
/* file operations here */
}
return 0;
}
| |
Data races
Calling this function destroys all objects with static duration: A program with multiple threads running shall not call exit (see quick_exit for a similar function that does not affect static objects).
Exceptions (C++)
No-throw guarantee: this function never throws exceptions.
If the program termination process described above throws an exception, terminate is automatically called.
See also
- abort
- Abort current process (function
)
- atexit
- Set function to be executed on exit (function
)