Эта глава описывает функции, которые возвращают информацию относительно специфической машины, тип аппаратных средств, тип программного обеспечения, и имя индивидуальной машины.
Этот раздел объясняет, как идентифицировать специфическую машину, на которой ваша программа выполняется. Идентификация машины состоит из имени главной ЭВМ 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, которую мы обычно не упоминаем, поскольку она - всегда возможна.