프로그래밍/C

thread 사용시 errno 처리법

잘 살아보세 2009. 4. 2. 15:15
일반적으로 errno 를 전역변수로 생각해서

외부에

extern int errno;

이런식으로 사용하는데

Thread를 사용할때는 이런 방법이 정상적으로 동작되지 않을 수 있다.

실제로 오류가 나더라도 return 되는 errno값을 출력해보면 0인 경우가

있었다.

원래 errno는 프로그래머가 직접 선언해서(extern int errno; 요런식으로...) 사용하지 않도록 권장하고 있다고 한다.

Multi Thread 환경에서 errno 를 사용하기 위해서는..

#define _REENTRANT
#include <errno.h>
#include ...

이런 형식으로 선언해주어야 한다.

또는 컴파일시에 -D_REENTRANT 옵션을 사용해야 errno가 thread마다 독립적인 변수로 사용이 가능하단다