Прервать выполнение программы
#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 системной библиотеки