Glibc2에는 재진입 버전 gethostent_r(), gethostbyaddr_r(), gethostbyname_r() 및 gethostbyname2_r()가 있습니다. 호출자는 성공에 채워질 호스트 구조 ret와 임시 작업 버퍼 buf 크기의 buf를 제공합니다. 호출 후 결과는 성공 결과를 가리킵니다. 오류가 발생하거나 항목이 발견되지 않은 경우 결과는 NULL이 됩니다. 함수는 성공 시 0을 반환하고 실패시 0이 아닌 오류 번호를 반환합니다. 이러한 함수의 비재입함수 버전에서 반환되는 오류 외에도 buf가 너무 작으면 함수가 ERANGE를 반환하고 더 큰 버퍼로 호출을 다시 시도해야 합니다. 전역 변수 h_errno는 수정되지 않지만 오류 번호를 저장할 변수의 주소는 h_errnop에 전달됩니다. 함수 gethostbyname(), gethostbyname_r(), gethostbyaddr() 및 gethostbyaddr_r() 각 포인터가 요청된 항목을 성공적으로 찾을 경우 구조형 호스트에 대한 포인터를 반환합니다. 그렇지 않으면 NULL을 반환합니다. 재진입 함수에서 반환되는 포인터가 gethostbyname_r(), gethostbyaddr_r() 및 gethostent_r()이 NULL이 아닌 경우 호출자가 제공한 결과 포인터와 항상 동일합니다. 함수 gethostbyname_r(), gethostbyaddr_r(및 gethostent_r() 함수는 이러한 작업에 대한 재진입 인터페이스를 제공합니다. 재진입 함수 gethostbyname_r(), gethostbyaddr_r() 및 gethostent_r()은 NULL을 반환하고 호출자가 제공한 버퍼의 길이가 결과를 저장할 만큼 충분히 크지 않은 경우 errno를 ERANGE로 설정합니다. 다중 스레드 응용 프로그램에서 errno의 적절한 사용 및 해석은 Intro(2)를 참조하십시오.

다음은 호스트 명령을 에뮬레이트하는 gethostbyname()을 사용하는 간단한 예제입니다. DNS 문제를 디버깅하기 위해 작성했습니다. (지금 현재 네트워크상에서 gethostbyname()은 호스트와 발굴과는 다른 답변을 반환합니다. 다른 호스트 이름을 지나치게 캐싱하는 것입니다. 즉, 폴루쿠쿠크 shrub.ca 17.250.248.64를 반환하고 있으며, 이는 mail.mac.com(!) 이러한 함수는 호스트 이름과 IP 주소 간에 앞뒤로 매핑됩니다. 예를 들어 “www.example.com”이 있는 경우 gethostbyname()를 사용하여 IP 주소를 얻고 구조체 in_addr에 저장할 수 있습니다.