Provided by: manpages-ru-dev_4.21.0-2_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
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

Linux man-pages 6.03                            5 февраля 2023 г.                                 gethostname(2)