perror() — 오류 메세지 출력
형식
#include <stdio.h>
void perror(const char *string);
언어 레벨
ANSI
스레드세이프
예
설명
perror() 함수는 오류 메세지를 stderr로 출력합니다. string이 NULL이 아니고 널 문자를 가리키지 않는 경우, 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();
}
}