CS(computer science)

[linux 뽀개기] - perror, strerror - 명령 실행 오류 처리하기

ebang 2023. 1. 4. 23:00
반응형

 

1. perror

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

perror() 함수는 오류 메세지를 stderr로 출력한다.

string이 NULL이 아니고 널 문자를 가리키지 않는 경우, string에서 지정된 스트링은 표준 오류 스트림으로 출력되고 콜론과 간격이 이어진다. 

errno의 값과 연관된 메세지가 출력된 다음 줄 바꾸기 문자가 이어진다. 

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

리턴값

리턴값이 없다. 

사용예시

#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();
   }
}

2. strerror

#include <string.h>  // C++ 에서는 <cstring>

char* strerror(int errnum);

오류 메세지 문자열을 가리키는 포인터를 얻어온다.

errnum 의 값을 통해 발생하였던 오류에 알맞은 오류 메세지를 가리키는 포인터를 리턴한다.

이 때 리턴되는 포인터는 문자열 리터럴을 가리키고 있기 때문에 그 내용이 바뀔 수 없다.

참고로 strerror 에 의해 출력되는 오류 메세지는 현재 사용중인 컴파일러나 플랫폼에 따라 다를 수 있다.

 

 

<사용하기>

perror(strerr(errno)) ;

strerror가 errno에 맞는 string을 반환하면, perror가 그 string을 인자로 받아서 표준 오류 스트링으로 출력한다.

반응형