[c] C에서 exit (0)과 exit (1)의 차이점은 무엇입니까?

누구든지 말해 줄 수 있습니까? C 언어에서 exit(0)와 의 차이점은 무엇입니까 exit(1)?



답변

C 언어에서 exit(0)와 의 차이점은 무엇입니까 exit(1)?

exit(0)성공적인 프로그램 종료를 나타내며 완전히 이식 가능하며
exit(1)(일반적으로) 성공적이지 않은 종료를 나타냅니다. 그러나 사용은 휴대용이 아닙니다.

C 표준은 C 프로그램에서 종료 상태를 정의 EXIT_SUCCESS하고 EXIT_FAILURE반환합니다.

0EXIT_SUCCESS성공적인 종료를 나타 내기 위해 표준에 의해 지정된 값이며, 단, EXIT_FAILUREunsucessful 종료를 반환하기위한 표준 값입니다. 1그래도 많은 구현에서 동일하게 사용됩니다.


참고:

C99 표준 : 7.20.4.3 exit5 항 기능

마지막으로 제어가 호스트 환경으로 반환됩니다. status 값이 0 또는
EXIT_SUCCESS이면 성공적 종료 상태의 구현 정의 형식이 반환됩니다. status 값이 EXIT_FAILURE이면 실패한 종료 상태의 구현 정의 형식이 반환됩니다. 그렇지 않으면 반환 된 상태는 구현에 따라 정의됩니다.


답변

exit C 언어에서는 종료 상태를 나타내는 정수를 사용합니다.

종료 성공

일반적으로 종료 상태 0은 성공 또는 프로그램의 성공적인 실행으로 인한 의도적 인 종료로 간주됩니다.

종료 실패

종료 상태 1은 실패로 간주되며 가장 일반적으로 프로그램이 어떤 이유로 종료되어야했으며 정상적인 프로그램 흐름에서 모든 것을 성공적으로 완료 할 수 없었 음을 의미합니다.

다음 은 종료 상태에 대해 설명 하는 GNU 리소스 입니다.


@Als가 언급했듯이 0과 1 대신 두 개의 상수를 사용해야합니다.

EXIT_SUCCESS 표준에 의해 0으로 정의됩니다.

EXIT_FAILURE 표준에 의해 하나로 제한되지는 않지만 많은 시스템이이를 하나로 구현합니다.


답변

exit(0)프로그램이 오류없이 종료되었음을 나타냅니다. exit(1)오류가 있음을 나타냅니다.

1다른 종류의 오류를 구별하는 것 외에 다른 값을 사용할 수 있습니다 .


답변

차이점은 환경에 반환되는 값 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는 호출되는 실행중인 프로세스를 완료하는 데 사용되는 시스템 호출입니다. 종료 할 매개 변수는 상위 프로세스에 하위 프로세스의 상태를 알리는 데 사용됩니다. 따라서 exit (0)은 프로세스의 성공적인 실행을 나타 내기 위해 사용 (그리고 자주 사용됨) 할 수 있고 exit (1)을 사용하여 오류를 표시 할 수 있습니다. 참조 링크


답변

exit(0)처럼 행동 return 0main()기능 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을 사용하여 확인하십시오)