Эта глава описывает функции, которые возвращают информацию относительно специфической машины, тип аппаратных средств, тип программного обеспечения, и имя индивидуальной машины.
Этот раздел объясняет, как идентифицировать специфическую машину, на которой ваша программа выполняется. Идентификация машины состоит из имени главной ЭВМ Internet и адреса Internet; см. Раздел 11.5 [Именное пространство Internet].
Прототипы для этих функций появляются в " unistd.h ". Команды оболочки hostname и hostid работают, вызывая их.
       int gethostname (char *name, size_t size)  (функция)
Эта функция возвращает имя главной машины в массиве name. 
Аргумент size определяет размер этого массива, в байтах.
Возвращаемое значение - 0 при успехе и -1 при отказе. В библиотеке GNU C gethostname терпит неудачу, если размер не достаточно большой; Вы можете пробовать снова с большим массивом. Следующее errno условие ошибки определено для этой функции:
Аргумент size - меньше чем размер главного имени плюс один.
Gethostname сохраняет начало главного имени в name, даже если главное имя полностью не будет сохранено. Для некоторых целей, усеченное главное имя достаточно. Если так, то Вы можете игнорировать код ошибки.
       int sethostname (const char *name, size_t length)  (функция)
       Sethostname функция устанавливает имя главной машины как name. 
Только привилегированные процессы могут делать это. Обычно это 
случается только один раз, при начальной загрузке системы.
Возвращаемое значение - 0 при успехе и -1 при отказе. Следующее errno условие ошибки определено для этой функции:
Этот процесс не может устанавливать главное имя, потому что он не привилегирован.
       long int gethostid (void)  (функция)
Эта функция возвращает " главный ID " машины. Обычно, это - 
первичный адрес Internet этой машины, преобразованный в long int. 
Но на некоторых системах это - бессмысленное но уникальное число, 
которое является жестко закодированным для каждой машины.
       int sethostid (long int id)  (функция)
       Sethostid функция устанавливает " главный ID " главной машины 
id. Только привилегированным процессам позволяются делать это. 
Обычно это случается только один раз, при начальной загрузке 
системы.
Возвращаемое значение - 0 при успехе и -1 при отказе. Следующие errno условия ошибки определено для этой функции:
Этот процесс не может устанавливать главное имя, потому что он не привилегирован.
операционная система не поддерживает установку главного ID. На некоторых системах, главный ID - бессмысленное но уникальное число, жестко закодированное для каждой машины.
Вы можете использовать uname функцию, чтобы выяснить некоторую информацию относительно типа компьютера. Эта функция и связанный тип данных объявлены в заглавном файле " sys/utsname.h ".
       struct utsname     (тип данных)
Структура utsname используется, чтобы содержать информацию, 
возвращенную uname функцией. Она имеет следующие элементы:
                char sysname[]
Это - имя используемой операционной системы.
                char nodename[]
Это - сетевое имя этого специфического компьютера. В библиотеке 
GNU, значение - такое же как возвращенное gethostname; см. Раздел 
26.1 [Главная Идентификация].
                char release[]
Это - текущий уровень выпуска реализации операционной системы.
                char version[]
Это - текущая версия выпуска операционной системы.
                char machine[]
Это - описание типа аппаратных средств, которые являются 
используемыми.
Некоторые системы обеспечивают механизм, чтобы опросить ядро непосредственно для этой информации. На системах без такого механизма, библиотека GNU C вносит это поле, основанное на имени конфигурации, которое было определено при формировании и установке библиотеки.
GNU использует имя с тремя частями, чтобы описать конфигурацию системы; три части - центральный процессор, изготовитель и тип системы, и они отделяются подчеркиванием. Любая возможная комбинация трех имен потенциально значима, но большинство таких комбинаций бессмысленно практически и даже значимые не обязательно обеспечиваются любой специфической программой GNU.
Так как значение в machine, как предполагается, описывает только аппаратные средства, оно состоит из первых двух частей имени конфигурации " центральный процессор - изготовитель ". Например:
"sparc-sun", "i386-anything", "m68k-hp", "m68k-sony", "m68k-sun", "mips-dec"
       int uname (struct utsname *info)  (функция)
       Uname функция вносит в структуру, указанную info информацию 
относительно операционной системы и главной машины. Неотрицательное 
значение указывает, что данные были успешно сохранены.
-1 указывает ошибку. Единственая возможная ошибка - EFAULT, которую мы обычно не упоминаем, поскольку она - всегда возможна.