GETHOSTID(3) Руководство программиста Linux GETHOSTID(3)

ИМЯ

gethostid, sethostid - возвращает или назначает уникальный идентификатор текущего узла

ОБЗОР

#include <unistd.h>

long gethostid(void); int sethostid(long hostid);

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

gethostid():

_BSD_SOURCE || _XOPEN_SOURCE >= 500
sethostid():

    начиная с 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)

ОПИСАНИЕ

Функции gethostid() и sethostid(), соответственно, возвращают и устанавливают уникальный 32-битный идентификатор текущей машины. Данный 32-битный идентификатор считается уникальным среди всех существующих систем UNIX. Обычно это напоминает Интернет-адрес локальной машины, возвращаемый gethostbyname(3), и поэтому, как правило, его не нужно изменять.

Только суперпользователь может вызывать sethostid().

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

Функция gethostid() возвращает 32-битный идентификатор текущего узла, установленный sethostid().

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

ОШИБКИ

Вызов sethostid() может завершиться со следующими ошибками:

Вызывающий не имеет прав на запись в файл, используемый для хранения ID узла.
Эффективный идентификатор пользователя или группы вызывающего процесса не совпадает с его соответствующим реальным идентификатором.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
gethostid() Безвредность в нитях MT-Safe hostid env locale
sethostid() Безвредность в нитях MT-Unsafe const:hostid

СООТВЕТСТВИЕ СТАНДАРТАМ

42BSD; эти функции удалены в 4.4BSD. В SVr4 содержится gethostid(), но отсутствует sethostid().

В POSIX.1-2001 и POSIX.1-2008 определена gethostid(), но отсутствует sethostid().

ЗАМЕЧАНИЯ

В реализации glibc hostid сохраняет значение в файле /etc/hostid (в glibc до версии 2.2 используется файл /var/adm/hostid).

В реализации glibc, если gethostid() не может открыть файл, содержащий ID узла, она получает имя узла с помощью gethostname(2), передаёт это имя gethostbyname_r(3) для получения адреса IPv4 узла, и возвращает значение, получаемое преобразованием битов полученного адреса IPv4 (такое значение может быть не уникально).

ДЕФЕКТЫ

Невозможно достоверно сказать, что идентификатор является глобально уникальным.

СМОТРИТЕ ТАКЖЕ

hostid(1), gethostbyname(3)

2017-09-15 Linux