Книга: Разработка приложений в среде Linux. Второе издание
6.2.3. Поиск и настройка базовой системной информации
6.2.3. Поиск и настройка базовой системной информации
Существует несколько порций полезной информации о системе, которая может понадобиться программе. Например, название и версия операционной системы могут служить для определения функциональности, предлагаемой системными программами.
Системный вызов uname()
позволяет программе обнаружить информацию времени ее выполнения.
#include <sys/utsname.h>
int uname(struct utsname* unameBuf);
В случае ошибки функция возвращает ненулевое значение, что происходит только в ситуациях, когда передается недопустимый указатель unameBuf
. При нормальном завершении структура, на которую он указывает, заполняется строками, завершаемыми NULL
, которые описывают текущую систему. В табл. 6.1 представлены члены структуры utsname
.
Таблица 6.1. Члены структуры utsname
Член | Описание |
---|---|
sysname |
Название операционной системы (в данном случае Linux ). |
release |
Номер версии выполняющегося ядра. Это полная версия вроде 2.6.2 . Номер может быть легко изменен тем, кто выполнял сборку ядра, и вполне возможно, что цифр будет больше трех. Во многих версиях можно встретить дополнительную цифру для описания примененных исправлений, например, 2.4.17-23 . |
version |
Под Linux здесь содержится временная метка, описывающая время, когда собиралось ядро. |
machine |
Короткая строка, указывающая тип микропроцессора, на котором работает операционная система. Для Pentium Pro или более мощных она может быть i686 , для процессоров класса Alpha — alpha , а для 64-разрядных процессоров PowerPC — ррс64 . |
nodename |
Имя хоста машины, которое обычно является первичным именем хоста в Internet. |
domainname |
Домен NIS (или YP), которому принадлежит машина. |
Член nodename
(имя узла) часто называется системным именем хоста (то, что отображает команда hostname
), однако его не следует путать с именем Internet-хоста. Несмотря на то что во многих системах эти члены не различаются, путать их не стоит. В системе с множеством Internet-адресов есть множество имен Internet-хостов, но только одно имя узла, поэтому эти имена не являются эквивалентными.
Более распространенная ситуация связана с домашними компьютерами, которые используют Internet-каналы широкополосной связи. Обычно их имя хоста в Internet выглядит вроде host127-56.raleigh.myisp.com
, а имена Internet-хостов меняются каждый раз при отключении на длительное время от модема[6]. Владельцы этих машин дают своим компьютерам имя узла, которое им больше нравится, например, loren
или eleanor
, что совершенно не относится к адресам Internet. При наличии множества машин, работающих на одном домашнем шлюзе, все они будут разделять один Internet-адрес (и одно имя Internet-хоста), но могут иметь имена вроде Linux.mynetwork.org
и freebsd.mynetwork.org
, которые все еще не являются именами Internet-хоста. В связи со всеми вышеперечисленными причинами, предполагать, что имя системного узла является допустимым именем Internet-хоста для машины не верно.
Имя узла системы устанавливается с помощью системного вызова sethostname()
[7], и имя домена NIS (YP)[8] — посредством системного вызова setdomainname()
.
#include <unistd.h>
int sethostname(const char * name, size_t len);
int setdomainname(const char * name, size_t len);
Оба этих системных вызова принимают указатель на строку (не обязательно завершающуюся NULL
), которая содержит подходящее имя, и целочисленный аргумент, указывающий размер строки.
- Сохранение информации о пользователях при миграции
- При копировании с жесткого диска на «флэшку» иногда появляется сообщение о дополнительной присоединенной информации, кот...
- Сохранение информации из Интернета
- 1.2. Определение количества информации. Единицы измерения количества информации
- Настройка учетных записей пользователей
- 1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации
- 1.4. Кодирование информации
- 7.4. Модель системы автоматизированного проектирования защиты информации
- 13.3.4. Поиск и замена текста
- Настройка доступа пользователей к рабочей книге
- Источники информации о конкурентах
- Фильтры и поиск