gethostent_r()

Считать следующую строку файла базы данных хостов

Прототип:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
struct hostent * gethostent_r( FILE **hostf,
struct hostent *result,
char *buffer,
int buflen,
int *h_errnop );

Аргументы:

hostf
NULL, или адрес указателя FILE *, связанного с файлом базы данных хоста.
result
Указатель на struct hostent, где функция может хранить запись хоста.
buffer
Указатель на буфер, который функция может использовать во время операции для хранения записей базы данных хостов; buffer должен быть достаточно большим, чтобы вместить все данные, связанные с записью о хосте. Буфера, размером 2 КБ обычно более чем достаточно; 256-байтовый буфер в большинстве случаев безопасен.
buflen
Размер буфера buffer.
h_errnop
Указатель на область памяти, где функция может сохранить значение h_errno в случае возникновения ошибки.

Библиотека:

libsocket

Описание:

Функция gethostent_r() является потокобезопасной версией функции gethostent(). Эта функция получает запись локального хоста. Если указатель, на который указывает hostf равен NULL, gethostent_r() открывает /etc/hosts и возвращает указатель на файл hostf для дальнейшего использования. Вызывающий процесс должен закрыть файл при помощи fclose().


Note: При первом вызове gethostent_r(), следует передать NULL в hostf.

Возвращаемое значение:

Указатель на структуру struct hostent или NULL в случае ошибки.

Коды ошибок:

В случае возникновения ошибки, int, на которую указывает h_errnop устанавливается в:

ERANGE
Предоставленный buffer не может вместить результат.
HOST_NOT_FOUND
Ответ, полученный непосредственно от сервера, который располагает информацией об указанном домене: неизвестный хост.
NO_ADDRESS
Нет адреса, связанного с именем; необходимо найти запись MX.
NO_DATA
Допустимое имя, однако отсутствует запись данных запрошенного типа. Имя известно серверу имен, но с ним не связан IP-адрес - это не является временной ошибкой. Другой тип запроса к серверу имен с использованием этого доменного имени даст ответ (например, для этого домена может быть зарегистрирован почтовый сервер пересылки).
NO_RECOVERY
Неизвестная ошибка сервера. Произошел непредвиденный сбой сервера. Неисправимая сетевая ошибка.
TRY_AGAIN
Ответ, полученный от промежуточного сервера: Ошибка поиска имени хоста. Обычно это временная ошибка и означает, что локальный сервер не получил ответа от полномо

Файлы:

/etc/hosts
Файл, содержащий базу данных доменных имен.

Классификация:

Unix

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

struct hostent, endhostent(), gethostent(), sethostent()

/etc/hosts в Справочнике по Утилитам




Предыдущий раздел: Описание API сетевой библиотеки