Программирование в стандарте POSIX


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


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

uname [-snrvma]

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

#include <sys/utsname.h> int uname (struct utsname *name);

Листинг 10.1. Описание функции uname (html, txt)

Функция 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. (html, txt)

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

#include <unistd.h> int gethostname (char *name, size_t namelen);

Листинг 10.3. Описание функции gethostname(). (html, txt)



Содержание раздела