table of contents
_exit(2) | System Calls Manual | _exit(2) |
NOME¶
_exit, _Exit - encerra o processo chamador
BIBLIOTECA¶
Biblioteca C Padrão (libc, -lc)
SINOPSE¶
#include <unistd.h>
[[noreturn]] void _exit(int status);
#include <stdlib.h>
[[noreturn]] void _Exit(int status);
_Exit():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
DESCRIÇÃO¶
_exit() encerra o processo solicitante "imediatamente". Qualquer descritor de arquivo aberto pelo processo será fechado. Qualquer processo filho será herdado pelo init(1) (ou pelo processo subceifador mais próximo como definido pelo uso da opção PR_SET_CHILD_SUBREAPER de prctl(2)). Ao processo pai é enviado um sinal SIGCHLD.
O valor status & 0xFF é retornado para o processo pai como o status de saída do processo e pode ser coletado pelo pai usando uma das chamadas da família wait(2).
A função _Exit() é equivalente a _exit().
VALOR DE RETORNO¶
Estas funções não possuem retorno.
PADRÕES¶
- _exit()
- POSIX.1-2008.
- _Exit()
- C11, POSIX.1-2008.
HISTÓRICO¶
POSIX.1-2001, SVr4, 4.3BSD.
_Exit() foi introduzido por C99.
NOTAS¶
Para uma discussão sobre os efeitos de uma saída, a transmissão do status de saída, processos zumbis, sinais enviados e assim por diante, consulte exit(3).
A função _exit() é como exit(3), mas não chama nenhuma função registrada com atexit(3) ou on_exit(3). Os fluxos abertos stdio(3) não são liberados. Por outro lado, _exit() fecha os descritores de arquivos abertos e isso pode causar um atraso desconhecido, aguardando a conclusão da saída pendente. Se o atraso não for desejado, pode ser útil chamar funções como tcflush(3) antes de chamar _exit(). Se qualquer E/S pendente é cancelada e qual E/S pendente pode ser cancelada em _exit(), depende da implementação.
Diferenças entre kernel/biblioteca C¶
O texto acima na DESCRIÇÃO descreve o efeito tradicional de _exit(), que é encerrar um processo, e estas são as semânticas especificadas por POSIX.1 e implementadas pela função wrapper da biblioteca C. Em sistemas modernos, isso significa o encerramento de todos os threads do processo.
Em contraste com a função wrapper da biblioteca C, a chamada de sistema bruta _exit() do Linux encerra apenas o thread da chamada, e ações como reaver pais de processos filho ou enviar SIGCHLD para o processo pai são realizadas somente se este for a último thread no grupo de threads.
Até o glibc 2.3, a função wrapper _exit() invocava a chamada de sistema do kernel com o mesmo nome. Desde o glibc 2.3, a função wrapper invoca exit_group(2), para encerrar todos os threads em um processo.
VEJA TAMBÉM¶
execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(3)
TRADUÇÃO¶
A tradução para português brasileiro desta página man foi criada por André Luiz Fassone <lonely_wolf@ig.com.br>, Fábio Henrique F. Silva <fabiohfs@mail.com> e Rafael Fontenelle <rafaelff@gnome.org>.
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
2 maio 2024 | Linux man-pages (unreleased) |