pthread_kill 를 사용하여 컴파일 시 유의사항
pthread 관련 함수 중
phtread_kill 함수는 특정 Thread에게 signal을 전송하는 기능을 수행하는 함수인데 관련 내용은 아래와 같다.
SYNTAX
RETURN VALUE
이 pthread_kill 함수를 코딩하여 멀티 플랫폼(Unix/Linux)에서 컴파일 하려고 할 때
-lpthread 링크를 걸어야 하는 것 외에 추가적으로 명심해야 할 것이 있다.
그것은 바로 UNIX와 LINUX에서 오브젝트 파일을 컴파일 할 때 헤더파일 참조 위치가 다르다는 것인데
보통 코딩할 시 #include<pthread.h> 헤더파일 만을 추가 한 뒤 똑같은 코드를
AIX, HP-UX(UNIX 계열), REDHAT,CENTOS(LINUX) 등에서 컴파일 하게 되면 재미 있는 현상을 경험 할 수 있다.
그것은 바로 LINUX에서 pthread_kill 함수를 찾을 수 없다는 내용.
error: 'pthread_kill' was not declared in this scope
AIX랑 HP-UX는 컴파일이 잘 되는데..
왜 리눅스 계열에서는 해당 에러가 발생하나 봤더니 그 이유는 /usr/include pthread.h 파일을 확인해 보면 알 수 있다.
유닉스 계열에서는 해당 함수가 /usr/include/pthread.h 또는 /usr/include/sys/pthread.h에 프로토 타입이 선언되어 있는 반면
리눅스는 찾을 수 없다..
이유는 리눅스에서는 해당 함수의 원형이 signal.h 파일에 포함되어 있기 때문이다.
시그널을 날리기 때문에 원형이 여기에 있는 것 같은데... 조금은 재미있는 배치다.
이것 때문에 삽질을... 얼마나 한겨..
끝.