Прервать выполнение программы
#include <stdlib.h>void _exit( int status );
EXIT_STATUS
, EXIT_FAILURE
или другим значением. Следует помнить, что только младшие значащие 8 бит (например, при значении 0377
статуса) могут быть доступны для ожидающего родительского процесса.libc
Фунция _exit() вызывает нормальное завершение программы.
![]() | Функции, зарегистрированные с помощью atexit(), не вызываются при использовании _exit() для завершения программы. Если необходимо их вызывать, используйте exit() вместо _exit(). |
Функция _exit() выполняет следующее, когда процесс завершается по какой-либо причине:
SIGHUP
дочерним процессам вызывающего процесса; это может неявно завершить дочерние процессы, если они не обрабатывают сигнал SIGHUP
. Дочерним процессам завершенного назначается новый родитель.
SIGCHLD
родительскому процессу.
SIGHUP
каждому нефоновому процессу в группе, если вызывающий процесс является контролирующим процессом для управляющего терминала соответствующей группы процессов.
SIGHUP
, а затем - сигнал SIGCONT
. Функция _exit() не возвращает значение.
#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 );}
POSIX 1003.1
abort(), atexit(), close(), execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), exit(), getenv(), main(), putenv(), sigaction(), signal(), spawn(), spawnl(), spawnle(), spawnlp(), spawnlpe(), spawnp(), spawnv(), spawnve(), spawnvp(), spawnvpe(), system(), wait(), waitpid()
Предыдущий раздел: Описание API системной библиотеки