.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified 1993-05-22, David Metcalfe .\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu) .\" Modified 1997-02-16, Andries Brouwer (aeb@cwi.nl) .\" Modified 1998-12-21, Andries Brouwer (aeb@cwi.nl) .\" Modified 2000-08-12, Andries Brouwer (aeb@cwi.nl) .\" Modified 2001-05-19, Andries Brouwer (aeb@cwi.nl) .\" Modified 2002-08-05, Michael Kerrisk .\" Modified 2004-10-31, Andries Brouwer .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH gethostbyname 3 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH НАИМЕНОВАНИЕ gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, gethostbyname_r, gethostent_r \- получение записи о сетевом узле .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH ОБЗОР .nf \fB#include \fP .P \fBvoid sethostent(int \fP\fIstayopen\fP\fB);\fP \fBvoid endhostent(void);\fP .P \fB[[deprecated]] extern int h_errno;\fP .P \fB[[deprecated]] struct hostent *gethostbyname(const char *\fP\fIname\fP\fB);\fP \fB[[deprecated]] struct hostent *gethostbyaddr(const void \fP\fIaddr\fP\fB[.\fP\fIlen\fP\fB],\fP \fB socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB);\fP .P \fB[[deprecated]] void herror(const char *\fP\fIs\fP\fB);\fP \fB[[deprecated]] const char *hstrerror(int \fP\fIerr\fP\fB);\fP .P /* расширение System V/POSIX */ \fBstruct hostent *gethostent(void);\fP .P /* GNU extensions */ \fB[[deprecated]]\fP \fBstruct hostent *gethostbyname2(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB);\fP .P \fBint gethostent_r(struct hostent *restrict \fP\fIret\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **restrict \fP\fIresult\fP\fB,\fP \fB int *restrict \fP\fIh_errnop\fP\fB);\fP .P \fB[[deprecated]]\fP \fBint gethostbyaddr_r(const void \fP\fIaddr\fP\fB[restrict .\fP\fIlen\fP\fB], socklen_t \fP\fIlen\fP\fB,\fP \fB int \fP\fItype\fP\fB,\fP \fB struct hostent *restrict \fP\fIret\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **restrict \fP\fIresult\fP\fB,\fP \fB int *restrict \fP\fIh_errnop\fP\fB);\fP \fB[[deprecated]]\fP \fBint gethostbyname_r(const char *restrict \fP\fIname\fP\fB,\fP \fB struct hostent *restrict \fP\fIret\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **restrict \fP\fIresult\fP\fB,\fP \fB int *restrict \fP\fIh_errnop\fP\fB);\fP \fB[[deprecated]]\fP \fBint gethostbyname2_r(const char *restrict \fP\fIname\fP\fB, int \fP\fIaf,\fP \fB struct hostent *restrict \fP\fIret\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **restrict \fP\fIresult\fP\fB,\fP \fB int *restrict \fP\fIh_errnop\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBgethostbyname2\fP(), \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP(): .nf Since glibc 2.19: _DEFAULT_SOURCE glibc up to and including 2.19: _BSD_SOURCE || _SVID_SOURCE .fi .P \fBherror\fP(), \fBhstrerror\fP(): .nf Since glibc 2.19: _DEFAULT_SOURCE glibc 2.8 to glibc 2.19: _BSD_SOURCE || _SVID_SOURCE Before glibc 2.8: none .fi .P \fBh_errno\fP: .nf Since glibc 2.19 _DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L glibc 2.12 to glibc 2.19: _BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L Before glibc 2.12: none .fi .SH ОПИСАНИЕ Функции \fBgethostbyname*\fP(), \fBgethostbyaddr*\fP(), \fBherror\fP() и \fBhstrerror\fP() являются устаревшими. Вместо них в приложениях следует использовать \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3) и \fBgai_strerror\fP(3). .P Функция \fBsethostent\fP() задаёт (при \fIstayopen\fP равным истине (1)), что для опроса сервера имён должен использоваться подключённый сокет TCP и что соединение должно остаться открытым для последующих запросов. В противном случае для опроса сервера имён будут использоваться дейтаграммы UDP. .P Функция \fBendhostent\fP() закрывает использованное для опросов сервера имён соединение TCP. .P Функция \fBgethostbyname\fP() возвращает структуру типа \fIhostent\fP для узла \fIname\fP. Значением \fIname\fP может быть или имя узла, или адрес IPv4 в стандартной точечной записи (как в \fBinet_addr\fP(3)). Если \fIname\fP — адрес IPv4, то поиск не выполняется и \fBgethostbyname\fP() просто копирует \fIname\fP в поле \fIh_name\fP, а его эквивалент \fIstruct in_addr\fP — в поле \fIh_addr_list[0]\fP возвращаемой структуры \fIhostent\fP Если \fIname\fP не оканчивается точкой и установлена переменная окружения \fBHOSTALIASES\fP, то \fIname\fP сначала ищется в файле псевдонимов, указанном в \fBHOSTALIASES\fP (формат файла описан в \fBhostname\fP(7)). Если \fIname\fP не оканчивается точкой, то поиск производится с текущем доменом и его предками. .P The \fBgethostbyaddr\fP() function returns a structure of type \fIhostent\fP for the given host address \fIaddr\fP of length \fIlen\fP and address type \fItype\fP. Valid address types are \fBAF_INET\fP and \fBAF_INET6\fP (defined in \fI\fP). The host address argument is a pointer to a struct of a type depending on the address type, for example a \fIstruct in_addr *\fP (probably obtained via a call to \fBinet_addr\fP(3)) for address type \fBAF_INET\fP. .P Функция \fBherror\fP() (устарела) печатает в \fIstderr\fP сообщение об ошибке в соответствии с текущим значением \fIh_errno\fP. .P Функция \fBhstrerror\fP() (устарела) принимает номер ошибки (обычно, \fIh_errno\fP) и возвращает соответствующую строку с сообщением об ошибке. .P .\" The domain name queries carried out by \fBgethostbyname\fP() and \fBgethostbyaddr\fP() rely on the Name Service Switch (\fBnsswitch.conf\fP(5)) configured sources or a local name server (\fBnamed\fP(8)). The default action is to query the Name Service Switch (\fBnsswitch.conf\fP(5)) configured sources, failing that, a local name server (\fBnamed\fP(8)). .SS "Историческая справка" Современным способом управления порядком поиска узлов является файл \fBnsswitch.conf\fP(5). .P В glibc 2.4 и старее, ключевое слово \fIorder\fP использовалось для управления порядком поиска узла в \fI/etc/host.conf\fP (\fBhost.conf\fP(5)). .P Структура \fIhostent\fP определена в \fI\fP таким образом: .P .in +4n .EX struct hostent { char *h_name; /* официальное имя узла */ char **h_aliases; /* список псевдонимов */ int h_addrtype; /* тип адреса узла */ int h_length; /* длина адреса */ char **h_addr_list; /* список адресов */ } #define h_addr h_addr_list[0] /* для обратной совместимости */ .EE .in .P Члены структуры \fIhostent\fP: .TP \fIh_name\fP Официальное имя узла. .TP \fIh_aliases\fP Массив альтернативных имён узла, заканчивается указателем null. .TP \fIh_addrtype\fP Тип адреса; \fBAF_INET\fP или \fBAF_INET6\fP. .TP \fIh_length\fP Длина адреса в байтах. .TP \fIh_addr_list\fP Массив указателей сетевых адресов узла (в сетевом порядке байт), заканчивается указателем null. .TP \fIh_addr\fP Первый адрес из \fIh_addr_list\fP, для обратной совместимости. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Функции \fBgethostbyname\fP() и \fBgethostbyaddr\fP() возвращают структуру \fIhostent\fP или указатель null при ошибке. При ошибке переменная \fIh_errno\fP содержит номер ошибки. Если получен не NULL, то возвращаемое значение может указывать на статические данные, смотрите замечание далее. .SH ОШИБКИ Переменная \fIh_errno\fP может содержать следующие значения: .TP \fBHOST_NOT_FOUND\fP Заданный узел неизвестен. .TP \fBNO_DATA\fP Запрашиваемое имя корректно, но не имеет IP\-адреса. При другом типе запроса для этого домена сервер имён может вернуть ответ. Синонимом \fBNO_DATA\fP является константа \fBNO_ADDRESS\fP. .TP \fBNO_RECOVERY\fP Произошла неисправимая ошибка сервера имён. .TP \fBTRY_AGAIN\fP Произошла временная ошибка у авторитативного сервера имён. Попробуйте позже. .SH ФАЙЛЫ .TP \fI/etc/host.conf\fP файл с настройками резолвера .TP \fI/etc/hosts\fP файл базы данных узлов .TP \fI/etc/nsswitch.conf\fP настройки диспетчера службы имён .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. Интерфейс Атрибут Значение T{ .na .nh \fBgethostbyname\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:hostbyname env locale T} T{ .na .nh \fBgethostbyaddr\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:hostbyaddr env locale T} T{ .na .nh \fBsethostent\fP(), \fBendhostent\fP(), \fBgethostent_r\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:hostent env locale T} T{ .na .nh \fBherror\fP(), \fBhstrerror\fP() T} Безвредность в нитях MT\-Safe T{ .na .nh \fBgethostent\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:hostent race:hostentbuf env locale T} T{ .na .nh \fBgethostbyname2\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:hostbyname2 env locale T} T{ .na .nh \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP() T} Безвредность в нитях MT\-Safe env locale .TE .P In the above table, \fIhostent\fP in \fIrace:hostent\fP signifies that if any of the functions \fBsethostent\fP(), \fBgethostent\fP(), \fBgethostent_r\fP(), or \fB\%endhostent\fP() are used in parallel in different threads of a program, then data races could occur. .SH СТАНДАРТЫ .TP \fBsethostent\fP() .TQ \fBendhostent\fP() .TQ \fBgethostent\fP() POSIX.1\-2008. .TP \fBgethostent_r\fP() GNU. .TP Другие: Отсутствуют. .SH ИСТОРИЯ .TP \fBsethostent\fP() .TQ \fBendhostent\fP() .TQ \fBgethostent\fP() POSIX.1\-2001. .TP \fBgethostbyname\fP() .TQ \fBgethostbyaddr\fP() .TQ \fIh_errno\fP Marked obsolescent in POSIX.1\-2001. Removed in POSIX.1\-2008, recommending the use of \fBgetaddrinfo\fP(3) and \fBgetnameinfo\fP(3) instead. .SH ПРИМЕЧАНИЯ Функции \fBgethostbyname\fP() и \fBgethostbyaddr\fP() могут возвращать указатели на статические данные, которые могут быть перезаписаны при последующих вызовах. Копирования \fIstruct hostent\fP недостаточно, так как она содержит указатели; требуется глубокое копирование. .P В первой реализации BSD аргумент \fIlen\fP у \fBgethostbyname\fP() имел тип \fIint\fP. Стандарт SUSv2 содержит ошибку и объявляет аргумент \fIlen\fP у \fBgethostbyaddr\fP() с типом \fIsize_t\fP (это неправильно, так как он должен быть \fIint\fP, а не \fIsize_t\fP. В POSIX.1\-2001 указанный тип — \fIsocklen_t\fP, который подходит). Смотрите также \fBaccept\fP(2). .P У прототипа BSD \fBgethostbyaddr\fP() первый аргумент имеет тип \fIconst char\ *\fP. .SS "Расширение System V/POSIX" .\" e.g., Linux, FreeBSD, UnixWare, HP-UX .\" e.g., FreeBSD, AIX В POSIX требуется вызов \fBgethostent\fP(), который должен возвращать следующий элемент из базы данных узлов. При использовании DNS/BIND это не имеет смысла, но допустимо, если база данных узлов — файл, который можно читать строку за строкой. На многих системах процедура с таким именем выполняет чтение из файла \fI/etc/hosts\fP. Она может быть доступна только когда библиотека собрана без поддержки DNS. Версия glibc игнорирует записи ipv6. Эта функция не реентерабельна; в glibc добавлена реентерабельная версия \fBgethostent_r\fP(). .SS "Расширения GNU" glibc2 also has a \fBgethostbyname2\fP() that works like \fBgethostbyname\fP(), but permits to specify the address family to which the address must belong. .P glibc2 also has reentrant versions \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), and \fBgethostbyname2_r\fP(). The caller supplies a \fIhostent\fP structure \fIret\fP which will be filled in on success, and a temporary work buffer \fIbuf\fP of size \fIbuflen\fP. After the call, \fIresult\fP will point to the result on success. In case of an error or if no entry is found \fIresult\fP will be NULL. The functions return 0 on success and a nonzero error number on failure. In addition to the errors returned by the nonreentrant versions of these functions, if \fIbuf\fP is too small, the functions will return \fBERANGE\fP, and the call should be retried with a larger buffer. The global variable \fIh_errno\fP is not modified, but the address of a variable in which to store error numbers is passed in \fIh_errnop\fP. .SH ОШИБКИ .\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482973 Функция \fBgethostbyname\fP() не работает с частями строки адреса IPv4 в точечном формате, если они записаны шестнадцатеричными числами. .SH "СМОТРИТЕ ТАКЖЕ" .\" .BR getipnodebyaddr (3), .\" .BR getipnodebyname (3), \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3), \fBresolver\fP(3), \fBhosts\fP(5), \fBnsswitch.conf\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .\" .BR resolv+ (8) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov , Иван Павлов и Kirill Rekhov . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .