Alguém pode me dizer? Qual é a diferença entre exit(0)
e exit(1)
na linguagem C?
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_FAILURE
) é, portanto, insuficiente.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.Sucesso na 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.
Falha de saída
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.fonte
exit(0)
indica que o programa foi encerrado sem erros.exit(1)
indica que houve um erro.Você pode usar valores diferentes, exceto
1
para diferenciar entre os diferentes tipos de erros.fonte
A diferença é que o valor devolvido ao ambiente está
0
no primeiro caso e1
no último caso:e
Observe também que o valor da macro
EXIT_SUCCESS
eEXIT_FAILURE
usado como um argumento para aexit
função são definidos pela implementação, mas geralmente são configurados como respectivamente0
e um número diferente de zero. (POSIXEXIT_SUCCESS
deve ser 0). Então, geralmenteexit(0)
significa um sucesso eexit(1)
um fracasso.Uma
exit
chamada de função com um argumento emmain
função é equivalente à instruçãoreturn
com o mesmo argumento.fonte
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
fonte
exit(0)
se comporte comoreturn 0
emmain()
função,exit(1)
se comporte comoreturn 1
. O padrão é, essamain
funçãoreturn 0
, se o programa terminou com sucesso enquanto um valor diferente de zero significa que o programa foi finalizado com algum tipo de erro.fonte
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)
fonte
Quando o executável termina (sai), ele retorna um valor para o shell que o executou.
exit(0)
geralmente indica que está tudo bem, enquantoexit(1)
indica que algo deu errado.fonte
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 ()
fonte
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 ...........fonte
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ídosexit(0)
significa que o Programa (Processo) foi encerrado com sucesso.fonte