getnetent_r, getnetbyname_r, getnetbyaddr_r -
возвращают
запись о
сети
(реентерабельные
версии)
Standard C library (
libc,
-lc)
#include <netdb.h>
int getnetent_r(struct netent *restrict result_buf,
char buf[restrict .buflen], size_t buflen,
struct netent **restrict result,
int *restrict h_errnop);
int getnetbyname_r(const char *restrict name,
struct netent *restrict result_buf,
char buf[restrict .buflen], size_t buflen,
struct netent **restrict result,
int *restrict h_errnop);
int getnetbyaddr_r(uint32_t net, int type,
struct netent *restrict result_buf,
char buf[restrict .buflen], size_t buflen,
struct netent **restrict result,
int *restrict h_errnop);
getnetent_r(),
getnetbyname_r(),
getnetbyaddr_r():
начиная с glibc 2.19:
_DEFAULT_SOURCE
в glibc 2.19 и старее:
_BSD_SOURCE || _SVID_SOURCE
Функции
getnetent_r(),
getnetbyname_r() и
getnetbyaddr_r()
являются
реентерабельными
эквивалентами
getnetent(3),
getnetbyname(3) и
getnetbynumber(3),
соответственно.
Они
отличаются
способом
возврата
структуры
netent и
списком
параметров
и типом
возвращаемого
значения. В
этой
справочной
странице
описаны
только
различия с
нереентерабельными
функциями.
Вместо
возврата
указателя
на
статически
выделенную
структуру
netent в
качестве
результата
эти
функции
копируют
структуру
в
расположение,
указанное
result_buf.
Массив
buf
используется
для
хранения
строковых
полей из
возвращаемой
структуры
netent
(нереентерабельные
функции
выделяют
эти строки
из
статического
хранилища).
Размер
данного
массива
задаётся в
buflen. Если
buf
слишком
мал, то
вызов
завершается
с ошибкой
ERANGE,
вызывающий
должен его
повторить
с большим
буфером
(для
большинства
приложений
должно
быть
достаточно
буфера
длиной 1024
байт).
Если вызов
получил
запись о
сети, то
*result
указывает
на
result_buf; в
противном
случае
*result
устанавливается
в NULL.
Буфер,
указанный
h_errnop,
используется
для
возврата
значения,
которое бы
сохранилось
в
глобальной
переменной
h_errno
нереентерабельными
версиями
этих
функций.
При
успешном
выполнении
эти
функции
возвращают
0. При ошибке
возвращается
одно из
положительных
значений,
перечисленных
В разделе
ОШИБКИ.
При ошибке,
отсутствии
записи (
getnetbyname_r(),
getnetbyaddr_r()) или
конце
данных (
getnetent_r())
значение
result
равно NULL.
- ENOENT
- (getnetent_r())
Больше нет
записей в
базе
данных.
- ERANGE
- Размер buf
слишком
мал.
Попробуйте
ещё раз с
большим
буфером (и
увеличенным
значением
buflen).
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
getnetent_r(), getnetbyname_r(),
getnetbyaddr_r() |
Безвредность
в нитях |
MT-Safe locale |
Эти
функции
являются
расширениями
GNU. Функции с
похожими
именами
есть и в
других
системах,
хотя и с
другим
набором
параметров.
getnetent(3),
networks(5)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Vladislav <
[email protected]>,
Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]