수색…


통사론

  • #include <errno.h>
  • int errno; / * 구현 정의 * /
  • #include <string.h>
  • char * strerror (int errnum);
  • #include <stdio.h>
  • void perror (const char * s);

비고

염두에두고 errno 구문이 선언하는 방법 만 표시임을 반드시 변수가 아니라. 스레드 인터페이스가있는 많은 현대 시스템에서 errno 는 현재 스레드에 대해 로컬 인 객체로 해석되는 일부 매크로입니다.

오류

표준 라이브러리 함수가 실패하면 errno에 적절한 오류 코드가 설정되는 경우가 있습니다. C 표준은 errno가 설정되기 위해 최소한 3 개의 값을 필요로합니다 :

의미
EDOM 도메인 오류
오류 범위 오류
EILSEQ 불법 멀티 바이트 문자 시퀀스

strerror

perror 가 충분히 유연하지 않으면 <string.h> 에서 strerror 를 호출하여 사용자가 읽을 수있는 오류 설명을 얻을 수 있습니다.

int main(int argc, char *argv[])
{
    FILE *fout;
    int last_error = 0;

    if ((fout = fopen(argv[1], "w")) == NULL) {
        last_error = errno;
         /* reset errno and continue */
         errno = 0;
    }

    /* do some processing and try opening the file differently, then */


    if (last_error) {
        fprintf(stderr, "fopen: Could not open %s for writing: %s", 
                argv[1], strerror(last_error));
        fputs("Cross fingers and continue", stderr);
    }

    /* do some other processing */

    return EXIT_SUCCESS;
}

공포

사용자가 읽을 수있는 오류 메시지를 stderr 인쇄하려면 <stdio.h>에서 perror 를 호출하십시오.

int main(int argc, char *argv[])
{
   FILE *fout;

   if ((fout = fopen(argv[1], "w")) == NULL) {
      perror("fopen: Could not open file for writing");
      return EXIT_FAILURE;
   }
return EXIT_SUCCESS;
}

그러면 errno 의 현재 값에 관한 오류 메시지가 인쇄됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow