Exit codes in C/C++ with Examples

The purpose of the exit() function is to terminate the execution of a program. The “return 0”(or EXIT_SUCCESS) implies that the code has executed succesfully without any error. Exit codes other than “0”(or EXIT_FAILURE) indicate the presence of an error in the code. Among all the exit codes, the codes 1, 2, 126 – 165 and 255 have special meanings and hence these should be avoided for user-defined exit codes.

Syntax

void exit(int return_code)

Note: It is also to taken into consideration that an exit code with a value greater than 255 returns an exit code modulo 256.

For Example: If we execute a statement exit(9999) then it will execute exit(15) as 9999%256 = 15.

Some of the Exit Codes are:



  • exit(1): It indicates abnormal termination of a program perhaps as a result a minor problem in the code.
  • exit(2): It is similar to exit(1) but is displayed when the error occurred is a major one. This statement is rarely seen.
  • exit(127): It indicates command not found.
  • exit(132): It indicates that a program was aborted (received SIGILL), perhaps as a result of illegal instruction or that the binary is probably corrupt.
  • exit(133): It indicates that a program was aborted (received SIGTRAP), perhaps as a result of dividing an integer by zero.
  • exit(134): It indicates that a program was aborted (received SIGABRT), perhaps as a result of a failed assertion.
  • exit(136): It indicates that a program was aborted (received SIGFPE), perhaps as a result of floating point exception or integer overflow.
  • exit(137): It indicates that a program took up too much memory.
  • exit(138): It indicates that a program was aborted (received SIGBUS), perhaps as a result of unaligned memory access.
  • exit(139): It indicates Segmentation Fault which means that the program was trying to access a memory location not allocated to it. This mostly occurs while using pointers or trying to access an out-of-bounds array index.
  • exit(158/152): It indicates that a program was aborted (received SIGXCPU), perhaps as a result of CPU time limit exceeded.
  • exit(159/153): It indicates that a program was aborted (received SIGXFSZ), perhaps as a result of File size limit exceeded.

Hence the various exit codes help the user to debug the code. For instance, if one receives an exit code of 139, this implies that the code has a segmentation fault and the code can be debugged accordingly.

Program 1:
Below program will give Segmentation Fault:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to demonstrate Segmentation Fault
#include <iostream>
using namespace std;
  
// Driver Code
int main()
{
    // An array of size 100
    int arr[100] = { 0 };
  
    // When we try to access the array out
    // of bound, it will give Segmentation Fault
    cout << arr[100001];
    return 0;
}

chevron_right


Output:
Below is the output of the above program:

Program 2:
Below program will give Floating Point Error:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to demonstrate
// Floating Point Error
#include <iostream>
using namespace std;
  
// Driver Code
int main()
{
    int a = 1, b = 0;
  
    // When we try to divide by zero
    // it should give SIGFPE
    cout << a / b;
    return 0;
}

chevron_right


Output:
Below is the output of the above program:

Program 3:
Below program will give Time Limit Exceed:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to demonstrate TLE
#include <iostream>
using namespace std;
  
// Driver Code
int main()
{
    // Below statement will give time
    // limit exceeded as well as memory
    // limit exceeded due to  infinite loop
    for (;;) {
        int arr[10000];
    }
    return 0;
}

chevron_right


Output:
Below is the output of the above program:




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.