Exit codes in C/C++ with Examples

23 Jun, 2021
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 successfully 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: 
CPP
// C++ program to demonstrate Segmentation Fault#include <iostream>using namespace std; // Driver Codeint 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;}
Output: Below is the output of the above program:  
Program 2: Below program will give Floating Point Error: 
CPP
// C++ program to demonstrate// Floating Point Error#include <iostream>using namespace std; // Driver Codeint main(){    int a = 1, b = 0;     // When we try to divide by zero    // it should give SIGFPE    cout << a / b;    return 0;}
Output: Below is the output of the above program:  
Program 3: Below program will give Time Limit Exceed: 
CPP
// C++ program to demonstrate TLE#include <iostream>using namespace std; // Driver Codeint main(){    // Below statement will give time    // limit exceeded as well as memory    // limit exceeded due to  infinite loop    for (;;) {        int arr[10000];    }    return 0;}
Output: Below is the output of the above program:  
 
ruhelaa48
C Programs
C++ Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C Program to read contents of Whole File
How to return multiple values from a function in C or C++?
C++ Program to check Prime Number
Producer Consumer Problem in C
C Program to Swap two Numbers
Sorting a Map by value in C++ STL
How to return multiple values from a function in C or C++?
Shallow Copy and Deep Copy in C++
C++ program for hashing with chaining
C++ Program to check if a given String is Palindrome or not