Respostas:
Qual é a diferença entre exit(0)
e exit(1)
na linguagem C?
exit(0)
indica o término do programa com sucesso e é totalmente portátil, Enquanto
exit(1)
(geralmente) indica o término sem êxito. No entanto, seu uso não é portátil.
Observe que o padrão C define EXIT_SUCCESS
e EXIT_FAILURE
retorna o status de término de um programa C.
0
e EXIT_SUCCESS
são os valores especificados pelo padrão para indicar uma finalização bem-sucedida; no entanto, EXIT_FAILURE
é apenas o valor padrão para retornar uma finalização malsucedida. 1
é usado para o mesmo em muitas implementações.
Referência:
Padrão C99: 7.20.4.3 A exit
função
Para 5
Finalmente, o controle é devolvido ao ambiente do host. Se o valor do status for zero ou
EXIT_SUCCESS
, uma forma definida pela implementação do encerramento do status com êxito é retornada. Se o valor de status forEXIT_FAILURE
, uma forma definida pela implementação da terminação malsucedida do status é retornada. Caso contrário, o status retornado é definido pela implementação.
exit
é a menor de suas preocupações (inferno, pode nem haver uma biblioteca C disponível lá. NADA É PORTÁTIL !!! 111).
exit
com qualquer valor ímpar indica sucesso. exit(0)
é tratado como um caso especial por causa da conformidade do C. Sim, POSIX é um padrão, mas nem todos os sistemas estão em conformidade com ele. Se você deseja escrever código que assume POSIX, você está livre para fazê-lo, mas isso limita a portabilidade do seu código.
exit
na linguagem C leva um número inteiro que representa um status de saída.
Normalmente, um status de saída 0 é considerado um sucesso ou uma saída intencional causada pela execução bem-sucedida do programa.
Um status de saída 1 é considerado uma falha e, mais comumente, significa que o programa teve que ser encerrado por algum motivo e não foi capaz de concluir tudo com êxito no fluxo normal do programa.
Aqui está um Recurso GNU falando sobre o Status de Saída.
Como @Als afirmou, duas constantes devem ser usadas no lugar de 0 e 1.
EXIT_SUCCESS
é definido pelo padrão como zero.
EXIT_FAILURE
não é restrito pelo padrão a ser um, mas muitos sistemas o implementam como um.
A diferença é que o valor devolvido ao ambiente está 0
no primeiro caso e 1
no último caso:
$ ./prog_with_exit_0
$ echo $?
0
$
e
$ ./prog_with_exit_1
$ echo $?
1
$
Observe também que o valor da macro EXIT_SUCCESS
e EXIT_FAILURE
usado como um argumento para a exit
função são definidos pela implementação, mas geralmente são configurados como respectivamente 0
e um número diferente de zero. (POSIX EXIT_SUCCESS
deve ser 0). Então, geralmente exit(0)
significa um sucesso e exit(1)
um fracasso.
Uma exit
chamada de função com um argumento em main
função é equivalente à instrução return
com o mesmo argumento.
exit é uma chamada de sistema usada para terminar um processo em execução a partir do qual é chamada. O parâmetro para sair é usado para informar o processo pai sobre o status do processo filho. Portanto, exit (0) pode ser usado (e frequentemente usado) para indicar a execução bem-sucedida de um processo e exit (1) para sinalizar um erro. link de referência
exit(0)
se comporte como return 0
em main()
função, exit(1)
se comporte como return 1
. O padrão é, essa main
função return 0
, se o programa terminou com sucesso enquanto um valor diferente de zero significa que o programa foi finalizado com algum tipo de erro.
exit (0) é equivalente a exit (EXIT_SUCCESS).
exit (1) é equivalente a exit (EXIT_FAILURE).
Em caso de falha, normalmente qualquer valor positivo é retornado para sair do processo, que você pode encontrar no shell usando $ ?.
Valor maior que 128 que é causado a terminação por sinal. Portanto, se algum comando shell terminar por sinal, o status de retorno deve ser (128 + número do sinal).
Por exemplo:
Se algum comando shell for encerrado por SIGINT, então $? dará 130 (128 + 2) (aqui 2 é o número do sinal para SIGINT, verifique usando kill -l)
exit () deve sempre ser chamado com um valor inteiro e valores diferentes de zero são usados como códigos de erro.
Veja também: Uso da função exit ()
exit(0)
significa que o Programa (Processo) termina normalmente com sucesso.
exit(1)
significa que o programa (processo) termina normalmente sem sucesso ..
Se você quiser observar isso, você deve saber como lidar com sinais e gerenciamento de processos no Unix ...
saber sobre sigaction
, watipid()
..for () ... tal .... API ...........
exit function
. Na linguagem de programação C, a função de saída chama todas as funções registradas com na saída e termina o programa.
exit(1)
significa que o programa (processo) foi encerrado sem sucesso.
Os buffers de arquivo são liberados, os fluxos são fechados e os arquivos temporários são excluídos
exit(0)
significa que o Programa (Processo) foi encerrado com sucesso.
EXIT_FAILURE
) é, portanto, insuficiente.