내가 사용하여 데이터 스트림을 리디렉션 할 수 있습니다 <
>
및 2>
위해 STDIN
, STDOUT
그리고 STDERR
.
어쨌든 나는 그것들을 반환 값과 혼동합니다.
반환 값이 1
아니면 2
이해하는 방법?
반환 값이 -1
이해하는 방법 이라면 ?
break
루프를 종료 할 수 있지만 다음 코드를 계속 실행할 수 있습니다 return
. 를 참조하면 return
, 그것은 종료됩니다 main()
리턴 코드와 올바른을?
이에 답하기 위해 C99 표준을 참조하십시오. 7.20.4.3 The exit function 을 읽으면 다음 문을 찾을 수 있습니다.
5 마지막으로 제어권이 호스트 환경으로 돌아갑니다. 의 값
status
이 0 또는EXIT_SUCCESS
이면 종료 성공 상태의 구현 정의 형식 이 반환됩니다. 의 값이status
이면EXIT_FAILURE
종료 실패 상태의 구현 정의 형식이 반환됩니다. 그렇지 않으면 반환 된 상태는 구현에서 정의됩니다.
여기서 강조해야 할 것은 C 표준이 종료 상태에 대한 특정 코드를 지정하지 않는다는 것입니다. 위의 스 니펫에서 언급 된 0 개 를 볼 수 있지만 순전히 exit()
API의 일부입니다 . 문장의 나머지 부분을 바꾸면 그 0 은 다른 구현 정의 성공적인 종료에 매핑 될 수 있습니다. 마찬가지로 EXIT_SUCCESS
및 의 정의가 EXIT_FAILURE
다른 코드에 매핑되지 않을 것이라는 보장 은 없습니다. 특히 정수로 끝나지 않을 수도 있습니다.
또한 7.20.4.6 The system function 을 보면 다음을 알 수 있습니다.
반환 값 3 인수가 널 포인터 인 경우 시스템 함수는 명령 프로세서를 사용할 수있는 경우에만 0이 아닌 값을 반환합니다. 인수가 널 포인터가 아니고 시스템 함수가 리턴하면 구현 정의 값을 리턴합니다.
이는 종료 코드가 순전히 구현에 정의되어 있으며 특정 동작에 의존 할 수 없음을 확인합니다.
이제 POSIX는 이것을 약간 확장합니다. stdlib.h
헤더 를 읽으면 다음을 찾을 수 있습니다.
EXIT_FAILURE
exit (); 종료에 실패했습니다. 0이 아닌 값으로 평가됩니다.
EXIT_SUCCESS
exit (); 종료 성공 0으로 평가됩니다.
이것은 이미 0
성공적인 종료 에 사용할 구현을 제한합니다 . 그러나 실제로 실패에 사용되는 0이 아닌 값을 정의하지는 않습니다.
exit()
함수 에 대해 읽으면 다음을 찾을 수 있습니다.
status 값은 0, EXIT_SUCCESS, EXIT_FAILURE 또는 다른 값이 될 수 있지만 대기중인 상위 프로세스에서 최하위 8 비트 (즉, 상태 & 0377) 만 사용할 수 있습니다.
또한 0 ~ 255 범위의 종료 상태를 다른 프로세스에서 사용할 수 있도록 보장함으로써 C 정의를 확장합니다.
따라서 POSIX는 0을 성공적인 종료로 정의하고 EXIT_FAILURE
(일부 0이 아닌 값) 실패한 종료로 정의하고 나머지 값은 프로그램 사용을 위해 남겨 둡니다.
그러나 다른 프로세스에서 종료 코드를 구문 분석하는 경우 wait()
기능도 살펴 봐야 합니다. 신호에 의한 종료와 같은 비정상 종료 상태에 대한 반환 상태를 처리하는 데 사용되는 추가 매크로를 정의합니다.
더 나아가면 FreeBSD가 sysexits.h 헤더를 도입 하여 종료 코드를 훨씬 더 정의 한다는 것을 알 수 있습니다 .
성공적인 종료는 항상 상태 0 또는 EX_OK로 표시됩니다. 임의의 프로그램이 이미 반환 할 수있는 다른 종료 상태와 충돌 할 가능성을 줄이기 위해 오류 번호는 EX__BASE에서 시작됩니다. 코드의 의미는 대략 다음과 같습니다.
EX_USAGE (64) 명령이 잘못 사용되었습니다 (예 : 잘못된 인수 수, 잘못된 플래그, 매개 변수의 잘못된 구문 등). […]
즉, FreeBSD 용으로 작성된 응용 프로그램은 잘 정의 된 종료 코드 64+를 사용할 수 있습니다.
간단히 요약하면 :
wait()
.그것이 표준이 얼마나 멀리 가는지입니다. 이제 실제로 대부분의 프로그램 은 일반적인 성공을 나타 내기 위해 0 을 사용 하고 다양한 다른 상태를 나타 내기 위해 0이 아닌 코드를 사용합니다. 특정 정보를 전달하기 위해 종료 코드를 사용하는 프로그램은 종종 맨 페이지에서이를 설명합니다.
예를 들어 GNU를 보면 다음과 cmp
같습니다.
종료 상태 0은 차이가 없음을 의미하고 1은 일부 차이가 있음을 의미하며 2는 문제가 있음을 의미합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다