perror() — 오류 메세지 출력

형식

#include <stdio.h>
void perror(const char *string);

언어 레벨

ANSI

스레드세이프

설명

perror() 함수는 오류 메세지를 stderr로 출력합니다. stringNULL이 아니고 널 문자를 가리키지 않는 경우, string에서 지정된 스트링은 표준 오류 스트림으로 출력되고 콜론과 간격이 이어집니다. errno의 값과 연관된 메세지가 출력된 다음 줄 바꾸기 문자가 이어집니다.

정확한 결과를 도출하려면, 라이브러리 함수가 오류를 리턴한 다음 바로 perror() 함수가 호출되어야 합니다. 그렇지 않으면 후속 호출은 errno 값을 변경할 수 있습니다.

리턴값

리턴값이 없습니다.

errno의 값은 다음으로 설정될 수 있습니다.
의미
EBADDATA
메세지 데이터는 유효하지 않습니다.
EBUSY
레코드 또는 파일은 사용 중입니다.
ENOENT
파일 또는 라이브러리를 찾을 수 없습니다.
EPERM
액세스에 불충분한 권한 부여.
ENOREC
레코드를 찾을 수 없습니다.
EIOERROR
회복 불가능한 I/O 오류가 발생했습니다.
EIORECERR
회복 가능한 I/O 오류가 발생했습니다.

이 예는 스트림을 열려고 합니다. fopen()이 실패하면, 예는 메세지를 출력하고 프로그램을 마칩니다.
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
   FILE *fh;
 
   if ((fh = fopen("mylib/myfile","r")) == NULL)
   {
      perror("Could not open data file");
      abort();
   }
}