답변:
C 언어에서 exit(0)와 의 차이점은 무엇입니까 exit(1)?
exit(0)성공적인 프로그램 종료를 나타내며 완전히 이식 가능하며
exit(1)(일반적으로) 성공적이지 않은 종료를 나타냅니다. 그러나 사용은 휴대용이 아닙니다.
C 표준은 C 프로그램에서 종료 상태를 정의 EXIT_SUCCESS하고 EXIT_FAILURE반환합니다.
0및 EXIT_SUCCESS성공적인 종료를 나타 내기 위해 표준에 의해 지정된 값이며, 단, EXIT_FAILUREunsucessful 종료를 반환하기위한 표준 값입니다. 1그래도 많은 구현에서 동일하게 사용됩니다.
참고:
C99 표준 : 7.20.4.3 exit5 항 기능
마지막으로 제어가 호스트 환경으로 반환됩니다. status 값이 0 또는
EXIT_SUCCESS이면 성공적 종료 상태의 구현 정의 형식이 반환됩니다. status 값이EXIT_FAILURE이면 실패한 종료 상태의 구현 정의 형식이 반환됩니다. 그렇지 않으면 반환 된 상태는 구현에 따라 정의됩니다.
exit가장 우려 되는 부분 인 전문화 / 내장 / 자립 / 어떤 환경 일 가능성이 높습니다 (도대체, 거기에서 사용할 수 있는 C 라이브러리 도 없을 수 있습니다 . 이식 가능 하지 않습니다 !!! 111).
exit홀수 값으로 호출 하면 성공을 나타냅니다. exit(0)C 준수를 위해 특별한 경우로 취급됩니다. 예, POSIX는 표준이지만 모든 시스템이 표준을 따르는 것은 아닙니다. POSIX를 가정하는 코드를 작성하려면 자유롭게 할 수 있지만 코드의 이식성을 제한합니다.
exit C 언어에서는 종료 상태를 나타내는 정수를 사용합니다.
일반적으로 종료 상태 0은 성공 또는 프로그램의 성공적인 실행으로 인한 의도적 인 종료로 간주됩니다.
종료 상태 1은 실패로 간주되며 가장 일반적으로 프로그램이 어떤 이유로 종료되어야했으며 정상적인 프로그램 흐름에서 모든 것을 성공적으로 완료 할 수 없었 음을 의미합니다.
다음 은 종료 상태에 대해 설명 하는 GNU 리소스 입니다.
@Als가 언급했듯이 0과 1 대신 두 개의 상수를 사용해야합니다.
EXIT_SUCCESS 표준에 의해 0으로 정의됩니다.
EXIT_FAILURE 표준에 의해 하나로 제한되지는 않지만 많은 시스템이이를 하나로 구현합니다.
차이점은 환경에 반환되는 값 0이 전자의 경우와 1후자의 경우입니다.
$ ./prog_with_exit_0
$ echo $?
0
$
과
$ ./prog_with_exit_1
$ echo $?
1
$
또한 매크로 값 EXIT_SUCCESS과 함수에 EXIT_FAILURE대한 인수로 사용되는 exit것은 구현에 정의되어 있지만 일반적으로 각각 00이 아닌 숫자로 설정됩니다. (POSIX는 EXIT_SUCCESS0이어야합니다). 그래서 보통 exit(0)성공과 exit(1)실패를 의미합니다 .
exitfunction에서 인수가 있는 함수 호출 은 동일한 인수가 main있는 명령문 return과 동일합니다.
exit(0)처럼 행동 return 0의 main()기능 exit(1)처럼 행동 return 1. 이 표준은, 즉 main기능 return 0이 프로그램 아닌 값 수단은 오류의 일종으로 종료 동안 프로그램이 성공적으로 끝난 경우.
exit (0)은 exit (EXIT_SUCCESS)와 같습니다.
exit (1)은 exit (EXIT_FAILURE)와 같습니다.
실패시 일반적으로 $?를 사용하여 쉘에서 찾을 수있는 프로세스를 종료하기 위해 양의 값이 리턴됩니다.
신호에 의해 종료 된 128보다 큰 값. 따라서 시그널로 종료 된 쉘 명령이 있으면 리턴 상태는 (128+ 신호 번호) 여야합니다.
예를 들면 :
쉘 명령이 SIGINT에 의해 종료되면 $? 130 (128 + 2) (여기서 2는 SIGINT의 신호 번호입니다. kill -l을 사용하여 확인하십시오)
exit ()는 항상 정수 값으로 호출해야하며 0이 아닌 값은 오류 코드로 사용됩니다.
참고 항목 : exit () 함수 사용
EXIT_FAILURE)로는 충분하지 않습니다.