C언어 return 0과 -1의 차이

어느 C언어 강의를 보다가 "프로그램을 종료하기위해서 return -1;을 해야되죠"라고 했는데 return 0;도 프로그램 종료 아닌가요? 두 return의 차이가 무엇인가요? 차이가 없다면 왜 return -1;을 쓰는 건가요?

1답변

  • 좋아요

    2

    싫어요
    채택취소하기

    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
    • 와우 유동욱님 간단한것을 이렇게 상세하게 답변해 주시다니! 감사합니다. Seong-Won Bae 2018.10.9 09:58

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.