Опубликован: 15.06.2004 | Доступ: свободный | Студентов: 2557 / 712 | Оценка: 4.35 / 3.96 | Длительность: 27:47:00
ISBN: 978-5-9556-0011-6

Лекция 10: Опрос характеристик хостов и их использование в приложениях

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Аннотация: Рассматриваются характеристики хостов (систем), важнейшими из которых являются конфигурационные параметры, а также служебные программы и функции для их опроса и способы настройки приложений на целевые конфигурации.

Опрос идентифицирующих данных хостов

Самую общую информацию о характеристиках хоста позволяют получить служебная программа uname

uname [-snrvma]

и одноименная функция (см. листинг 10.1).

#include <sys/utsname.h>
int uname (struct utsname *name);
Листинг 10.1. Описание функции uname

Функция uname( помещает информацию, идентифицирующую опрашиваемую систему, в структуру типа utsname, которая должна содержать по крайней мере следующие поля.

char sysname [];  /* Имя реализации ОС */
char nodename []; /* Имя хоста как узла */
                  /* коммуникационной сети */
char release [];  /* Номер выпуска ОС */
char version [];  /* Номер версии ОС */
char machine [];  /* Название аппаратной */
                  /* конфигурации */

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

Аналогичные данные выдает на стандартный вывод служебная программа uname, опции которой соответствуют полям структуры utsname ( -m – выдать название аппаратной конфигурации, -nимя узла, -s, -r и -v – имя реализации ОС, номера выпуска и версии, соответственно). Опция -a предписывает выдавать все; без опций выдается имя реализации.

Результат выполнения команды

uname -a

может выглядеть так, как показано в листинге 10.2. Правда, здесь фигурирует нестандартная составляющая, выдаваемая по опции -p, – тип процессора (в данном случае unknown ).

Linux t94 2.4.18-3 #1 Thu Apr 18 07:37:53
EDT 2002 i686 unknown
Листинг 10.2. Возможный результат выполнения команды uname -a.

Функция gethostname() (см. листинг 10.3) возвращает в массиве name длины namelen   имя хоста. Подходящее значение для namelenHOST_NAME_MAX + 1 (см. следующий раздел).

#include <unistd.h>
int gethostname (char *name, size_t namelen);
Листинг 10.3. Описание функции gethostname().
< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Антон Коновалов
Антон Коновалов

В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13
Планируется ли актуализация материалов данного очень полезного курса?