Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

       gethostname, sethostname - получить/установить имя узла

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <unistd.h>

       int gethostname(char *name, size_t len);
       int sethostname(const char *name, size_t len);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       gethostname():
           _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
               || /* glibc 2.19 and earlier */ _BSD_SOURCE

       sethostname():
           начиная с glibc 2.21:
               _DEFAULT_SOURCE
           в glibc 2.19 и 2.20:
               _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
           до glibc 2.19, включительно:
               _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

ОПИСАНИЕ

       Данные  системные  вызовы  используются  для  получения  или изменения имени узла системы.
       Точнее говоря, они работают с именем узла, связанным с пространством имён UTS  вызывающего
       процесса.

       Вызов  sethostname()  устанавливает имя узла равны значению, указанному в массиве символов
       name. Аргумент len определяет количество байт в name.  (Таким  образом,  name  не  требует
       наличия завершающего байта с null.)

       gethostname() возвращает имя узла с null на конце в массиве символов name длиной len байт.
       Если имя узла,  оканчивающееся  null,  не  помещается,  то  имя  обрезается  и  ошибки  не
       происходит (но смотрите ЗАМЕЧАНИЯ далее). В POSIX.1 сказано, что если обрезание произошло,
       то неясно, будет ли буфер содержать завершающий байт с null.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On success, zero is returned.  On error, -1 is returned, and errno is set to indicate  the
       error.

ОШИБКИ

       EFAULT name является неправильным адресом.

       EINVAL len  имеет  отрицательное  значение  или  для  sethostname()  длина len больше, чем
              максимально допустимое значение.

       ENAMETOOLONG
              (glibc gethostname())  len is smaller than the actual  size.   (Before  glibc  2.1,
              glibc uses EINVAL for this case.)

       EPERM  Для   работы   с   sethostname()   у   вызывающего   нет  мандата  CAP_SYS_ADMIN  в
              пользовательском  пространстве  имён,  связанном  с  его  пространством  имён   UTS
              (смотрите namespaces(7)).

СТАНДАРТЫ

       SVr4,  4.4BSD  (данная  функция впервые появилась в 4.2BSD). В POSIX.1-2001 и POSIX.1-2008
       определена gethostname(), но нет sethostname().

ЗАМЕЧАНИЯ

       SUSv2 гарантирует, что «Длина имени узла ограничена 255-ю байтами».  POSIX.1  гарантирует,
       что  «Длина  имени  узла  (не включая завершающий нулевой символ) ограничена HOST_NAME_MAX
       байтами».  В Linux значение HOST_NAME_MAX равно 64, которое было урезано начиная  с  Linux
       1.0 (ранние версии имели предел в 8 байт).

   Отличия между библиотекой C и ядром
       Библиотека  GNU  C  library  не  использует  системный  вызов  gethostname(); вместо этого
       gethostname() в ней реализован в виде библиотечной функции, которая  вызывает  uname(2)  и
       копирует  до len байт в name из возвращаемого поля nodename. Выполнив копирование, функция
       проверяет, что длина nodename не больше или равна  len,  и  если  это  обнаруживается,  то
       функция  возвращает  -1, устанавливая значение  errno равным ENAMETOOLONG; в этом случае в
       возвращаемое значение name завершающий null не добавляется.

       Versions of glibc before glibc 2.2 handle the case where the length of  the  nodename  was
       greater  than  or  equal  to len differently: nothing is copied into name and the function
       returns -1 with errno set to ENAMETOOLONG.

СМ. ТАКЖЕ

       hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7)

ПЕРЕВОД

       Русский   перевод   этой    страницы    руководства    был    сделан    Azamat    Hackimov
       <azamat.hackimov@gmail.com>,    Dmitry   Bolkhovskikh   <d20052005@yandex.ru>,   Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.