gethostbyname_r 예제

이러한 함수는 호스트 이름과 IP 주소 간에 앞뒤로 매핑됩니다. 예를 들어 „www.example.com”이 있는 경우 gethostbyname()를 사용하여 IP 주소를 얻고 구조체 in_addr에 저장할 수 있습니다. 함수 gethostbyname_r(), gethostbyaddr_r(및 gethostent_r() 함수는 이러한 작업에 대한 재진입 인터페이스를 제공합니다. Glibc2에는 재진입 버전 gethostent_r(), gethostbyaddr_r(), gethostbyname_r() 및 gethostbyname2_r()가 있습니다. 호출자는 성공에 채워질 호스트 구조 ret와 임시 작업 버퍼 buf 크기의 buf를 제공합니다. 호출 후 결과는 성공 결과를 가리킵니다. 오류가 발생하거나 항목이 발견되지 않은 경우 결과는 NULL이 됩니다. 함수는 성공 시 0을 반환하고 실패시 0이 아닌 오류 번호를 반환합니다. 이러한 함수의 비재입함수 버전에서 반환되는 오류 외에도 buf가 너무 작으면 함수가 ERANGE를 반환하고 더 큰 버퍼로 호출을 다시 시도해야 합니다.

전역 변수 h_errno는 수정되지 않지만 오류 번호를 저장할 변수의 주소는 h_errnop에 전달됩니다. 재진입 함수에서 반환되는 포인터가 gethostbyname_r(), gethostbyaddr_r() 및 gethostent_r()이 NULL이 아닌 경우 호출자가 제공한 결과 포인터와 항상 동일합니다. 재진입 함수 gethostbyname_r() 및 gethostbyaddr_r()는 오류가 발생시 h_errnop이 가리키는 정수를 이러한 값 중 하나로 설정합니다. netdir 함수에는 gethostent() 및 gethostent_r()의 유사체가 없으므로 이러한 열거 함수는 nsswitch.conf의 호스트 항목으로 바로 이동합니다. 따라서 열거는 gethostbyname(), gethostbyname_r(), gethostbyaddr(및 gethostbyaddr_r)에서 사용하는 것과 다른 소스의 결과를 반환할 수 있습니다. 재진입 인터페이스gethostbyname_r(), gethostbyaddr_r() 및 gethostent_r()은 커밋되지 않은 기준으로이 릴리스에 포함되며 향후 사소한 릴리스에서 변경 되거나 제거 될 수 있습니다. 재진입 함수 gethostbyname_r(), gethostbyaddr_r() 및 gethostent_r()은 NULL을 반환하고 호출자가 제공한 버퍼의 길이가 결과를 저장할 만큼 충분히 크지 않은 경우 errno를 ERANGE로 설정합니다. 다중 스레드 응용 프로그램에서 errno의 적절한 사용 및 해석은 Intro(2)를 참조하십시오. gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, herror, hstrerror, gethostbyar_r, gethostbyname2, gethostbyname2, gethostbyname_r, gethostbyname_r, gethostent_r – get network 호스트 항목 이러한 함수는 항목을 얻기 위해 사용됩니다. 호스트를 설명합니다. 항목은 /etc/nsswitch.conf 파일에 지정된 호스트의 소스에서 올 수 있습니다. nsswitch.conf(4)를 참조하십시오.

이러한 기능은 새로운 기능, getipnodebyname (3SOCKET), getipnodebyaddr (3SOCKET), 및 getaddrinfo (3SOCKET)로 대체되었습니다. 최신 기능은 다중 스레딩이 수행되거나 IPv6와 같은 기술을 사용할 때 응용 프로그램에 더 큰 이식성을 제공합니다. 예를 들어 아래에 설명된 함수는 IPv6에서 작동하도록 지정된 응용 프로그램과 함께 사용할 수 없습니다. 재진입하지 않는 것과 마찬가지로 gethostbyname_r() 및 gethostbyaddr_r()은 열거 위치를 확정되지 않은 상태로 둡니다. 함수 gethostbyname(), gethostbyname_r(), gethostbyaddr() 및 gethostbyaddr_r() 각 포인터가 요청된 항목을 성공적으로 찾을 경우 구조형 호스트에 대한 포인터를 반환합니다. 그렇지 않으면 NULL을 반환합니다.