| Program termination | ||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||
| Unreachable control flow | ||||||||||||||||||||||||||||||||||||
(C23) | ||||||||||||||||||||||||||||||||||||
| Communicating with the environment | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||
| Memory alignment query | ||||||||||||||||||||||||||||||||||||
(C23) | ||||||||||||||||||||||||||||||||||||
| Signals | ||||||||||||||||||||||||||||||||||||
| Signal types | ||||||||||||||||||||||||||||||||||||
| Non-local jumps | ||||||||||||||||||||||||||||||||||||
| Types | ||||||||||||||||||||||||||||||||||||
Defined in header <stdlib.h> | ||
int at_quick_exit(void(*func)(void)); | (since C11) | |
Registers the function pointed to byfunc to be called on quick program termination (viaquick_exit).
Calling the function from several threads does not induce a data race. The implementation is guaranteed to support the registration of at least 32 functions. The exact limit is implementation-defined.
The registered functions will not be called onnormal program termination. If a function need to be called in that case,atexit must be used.
Contents |
| func | - | pointer to a function to be called on quick program termination |
0 if the registration succeeds, nonzero value otherwise.
#include <stdlib.h>#include <stdio.h> void f1(void){puts("pushed first");fflush(stdout);} void f2(void){puts("pushed second");} int main(void){ at_quick_exit(f1); at_quick_exit(f2);quick_exit(0);}
Output:
pushed secondpushed first
| causes abnormal program termination (without cleaning up) (function)[edit] | |
| causes normal program termination with cleaning up (function)[edit] | |
| registers a function to be called onexit() invocation (function)[edit] | |
(C11) | causes normal program termination without completely cleaning up (function)[edit] |
C++ documentation forat_quick_exit | |