C언어 return 0과 -1의 차이
조회수 3534회
어느 C언어 강의를 보다가 "프로그램을 종료하기위해서 return -1;을 해야되죠"라고 했는데 return 0;도 프로그램 종료 아닌가요? 두 return의 차이가 무엇인가요? 차이가 없다면 왜 return -1;을 쓰는 건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
main()함수의 반환 값은 프로그램이 정상적으로 종료되었는지를 OS에게 알리는 용도로사용됩니다.
현대 OS의 기간이 되는 Unix 부터 현대 OS의 대부분은 main()의 반환 값이
0
일 경우 프로그램이 정상적으로 종료된 것으로 파악하며, 아닐 경우 오류가 발생한 것으로 판단합니다.0
이 아닐때의 값은 오류코드로써 어떤 오류가 발생했는지 판단하는 기준이 되기도합니다.따라서 main()의 반환 값이 어떤 것이든 프로그램은 종료가 됩니다. 말씀하신 것 처럼
-1
을 반환하면 OS에게 오류가 발생되어 종료되었다 라는 것을 알리는 것입니다.프로그램을 종료하기위해서 return -1;을 해야되죠
의 전후 내용이 없어 문맥상 어떤 의미인지 명확하지 않으나 프로그램에 오류가 발생되어 종료시켜야 하는 것을 의미하고 말한것이라 가정해 보겠습니다.-1
이란 값은 Unix 계열 시스템 콜에서 해당 API 호출의 실패를 의미합니다. 그리고 실패한 내용에 대한 자세한 정보는 errno를 통해 전달하고있습니다.int ret = write(fd, data, 10); if (ret == -1) { char const* message = strerror(errno); printf("failed to write: %s", message); }
이러한 방식은 C언어 프로그래머들이 주로 사용하는 방법으로 자리 잡혀 있고, 강의하신 분의 이러한 경험이 바탕되어
0
이외의 다른 값이 아닌-1
을 반환해야 한다 라고 말한 것이 아닌가 추론해 봅니다.- 정말 많은 도움 됬습니다 !! 알 수 없는 사용자 2018.10.7 16:20
- 와우 유동욱님 간단한것을 이렇게 상세하게 답변해 주시다니! 감사합니다. 알 수 없는 사용자 2018.10.9 09:58
댓글 입력