Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (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.

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

       При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

       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)).

ВЕРСИИ

       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 не добавляется.

СТАНДАРТЫ

       gethostname()
              POSIX.1-2008.

       sethostname()
              Отсутствуют.

ИСТОРИЯ

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

       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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                   gethostname(2)