_exit()
QNX SDP8.0C Library ReferenceAPIDeveloper
Terminate the program
Synopsis:
#include <unistd.h>
void _exit( int status );
This function is declared in <process.h>, which <unistd.h> includes.
Arguments:
- status
- The exit status to use for the program. The value may be zero, EXIT_SUCCESS, EXIT_FAILURE or any other value. Note that only the least significant bits (i.e., status & 0377) may be available to a waiting parent process.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The _exit() function causes normal program termination to occur.
Note:
The _exit() function does the following when a process terminates for any reason:
- Closes all open file descriptors and directory streams in the calling process.
- Notifies the parent process of the calling process if the parent called wait() or waitpid(). The low-order 8 bits of status are made available to the parent via wait() or waitpid().
- Saves the exit status if the parent process of the calling process isn't executing a wait() or waitpid() function. If the parent calls wait() or waitpid() later, this status is returned immediately.
- Sends a SIGHUP signal to the calling process's children; this can indirectly cause the children to exit if they don't handle SIGHUP. Children of a terminated process are assigned a new parent process.
- Sends a SIGCHLD signal to the parent process.
- Sends a SIGHUP signal to each process in the foreground process group if the calling process is the controlling process for the controlling terminal of that process group.
- Disassociates the controlling terminal from the calling process's session if the process is a controlling process, allowing it to be acquired by a new controlling process.
- If the process exiting causes a process group to become orphaned, and if any member of the newly-orphaned process group is stopped, then a SIGHUP signal followed by a SIGCONT signal is sent to each process in the newly-orphaned process group.
Returns:
The _exit() function doesn't return.
Examples:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
FILE *fp;
if( argc <= 1 ) {
fprintf( stderr, "Missing argument\n" );
exit( EXIT_FAILURE );
}
fp = fopen( argv[1], "r" );
if( fp == NULL ) {
fprintf( stderr, "Unable to open '%s'\n", argv[1] );
_exit( EXIT_FAILURE );
}
fclose( fp );
/*
At this point, calling _exit() is the same as calling
return EXIT_SUCCESS;...
*/
_exit( EXIT_SUCCESS );
}
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Page updated: