Next Previous Contents

26. Информационная Система

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

26.1 Главная Идентификация

Этот раздел объясняет, как идентифицировать специфическую машину, на которой ваша программа выполняется. Идентификация машины состоит из имени главной ЭВМ Internet и адреса Internet; см. Раздел 11.5 [Именное пространство Internet].

Прототипы для этих функций появляются в " unistd.h ". Команды оболочки hostname и hostid работают, вызывая их.

       int gethostname (char *name, size_t size)  (функция)
Эта функция возвращает имя главной машины в массиве name. Аргумент size определяет размер этого массива, в байтах.

Возвращаемое значение - 0 при успехе и -1 при отказе. В библиотеке GNU C gethostname терпит неудачу, если размер не достаточно большой; Вы можете пробовать снова с большим массивом. Следующее errno условие ошибки определено для этой функции:

ENAMETOOLONG

Аргумент size - меньше чем размер главного имени плюс один.

На некоторых системах, имеется символ для максимально возможной длины главного имени: MAXHOSTNAMELEN. Он определен в " sys/param.h ". Но Вы не можете расчитывать на его существование, так что более чисто обработать отказ и попытаться снова.

Gethostname сохраняет начало главного имени в name, даже если главное имя полностью не будет сохранено. Для некоторых целей, усеченное главное имя достаточно. Если так, то Вы можете игнорировать код ошибки.

       int sethostname (const char *name, size_t length)  (функция)
Sethostname функция устанавливает имя главной машины как name. Только привилегированные процессы могут делать это. Обычно это случается только один раз, при начальной загрузке системы.

Возвращаемое значение - 0 при успехе и -1 при отказе. Следующее errno условие ошибки определено для этой функции:

EPERM

Этот процесс не может устанавливать главное имя, потому что он не привилегирован.

       long int gethostid (void)  (функция)
Эта функция возвращает " главный ID " машины. Обычно, это - первичный адрес Internet этой машины, преобразованный в long int. Но на некоторых системах это - бессмысленное но уникальное число, которое является жестко закодированным для каждой машины.
       int sethostid (long int id)  (функция)
Sethostid функция устанавливает " главный ID " главной машины id. Только привилегированным процессам позволяются делать это. Обычно это случается только один раз, при начальной загрузке системы.

Возвращаемое значение - 0 при успехе и -1 при отказе. Следующие errno условия ошибки определено для этой функции:

EPERM

Этот процесс не может устанавливать главное имя, потому что он не привилегирован.

ENOSYS

операционная система не поддерживает установку главного ID. На некоторых системах, главный ID - бессмысленное но уникальное число, жестко закодированное для каждой машины.

26.2 Идентификация Типа АППАРАТНЫХ СРЕДСТВ/ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Вы можете использовать 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, которую мы обычно не упоминаем, поскольку она - всегда возможна.


Next Previous Contents