Namespaces
Variants
Views
Actions

exit

From cppreference.com
< c‎ | program
Defined in header <stdlib.h>
void exit( int exit_code );
(until C11)
_Noreturn void exit( int exit_code );
(since C11)

Causes normal program termination to occur.

Several cleanup steps are performed:

  • functions passed to atexit are called, in reverse order of registration
  • all C streams are flushed and closed
  • files created by tmpfile are removed
  • control is returned to the host environment. If exit_code is zero or EXIT_SUCCESS, an implementation-defined status, indicating successful termination is returned. If exit_code is EXIT_FAILURE, an implementation-defined status, indicating unsuccessful termination is returned. In other cases implementation-defined status value is returned.

Contents

[edit] Notes

The functions registered with at_quick_exit are not called.

The behavior is undefined if a program calls exit more than once, or if it calls exit and quick_exit

The behavior is undefined if during a call to a function registered with atexit, the function exits with longjmp.

Returning from the the main function, either by a return statement or by reaching the end of the function, executes exit(), passing the argument of the return statement (or 0 if implicit return was used) as exit_code.

[edit] Parameters

exit_code - exit status of the program

[edit] Return value

(none)

[edit] Example

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    FILE *fp = fopen("data.txt","r");
    if (fp == NULL) {
       fprintf(stderr, "error opening file data.txt in function main()\n");
       exit(1);
    }
    fclose(fp);
    printf("Normal Return\n");
}

Output:

error opening file data.txt in function main()

[edit] See also

causes abnormal program termination (without cleaning up)
(function) [edit]
registers a function to be called on exit() invocation
(function) [edit]
causes normal program termination without completely cleaning up
(function) [edit]