...
| Code Block | ||
|---|---|---|
| ||
#include <stdlib.h>
/* ... */
if (/* something really bad happened */) {
exit(EXIT_FAILURE);
}
|
Calling exit()
- Flushes unwritten buffered data.
- Closes all open files.
- Removes temporary files.
- Returns an integer exit status to the operating system.
...
| Code Block | ||
|---|---|---|
| ||
#include <stdlib.h>
/* ... */
if (/* something really bad happened */) {
_Exit(EXIT_FAILURE);
}
|
The _exit() function is a synonym for _Exit()
...
| Code Block | ||
|---|---|---|
| ||
#include <stdlib.h>
/* ... */
if (/* something really bad happened */) {
abort();
}
|
The abort() function causes abnormal program termination to occur, unless the signal SIGABRT is being caught and the signal handler does not return.
...
For example, calling:
| Code Block | ||
|---|---|---|
| ||
atexit(turn_gizmo_off); |
"registers" the turn_gizmo_off() function so that a subsequent call to exit() will invoke turn_gizmo_off(); as it terminates the program. The C standard says that atexit() should let you register up to 32 functions.
...
ERR03-A. Use runtime-constraint handlers when calling functions defined by TR24731-1 1312. Error Handling (ERR) ERR05-A. Application-independent code must provide error detection without dictating error handling