Главная » 2017 » Ноябрь » 21 » man 2 olduname
01:06
man 2 olduname

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


uname - получает название и информацию о текущем ядре



ОБЗОР


#include <sys/utsname.h>

int uname(struct utsname *buf);



ОПИСАНИЕ


uname() возвращает информацию о системе в структуру с адресом buf. Структура
utsname определена в <sys/utsname.h>:

struct utsname {
char sysname[]; /* название операционной системы
(например, «Linux») */
char nodename[]; /* имя в сети, зависящее от реализации */
char release[]; /* идентификатор выпуска ОС (например, «2.6.28») */
char version[]; /* версия ОС */
char machine[]; /* идентификатор аппаратного обеспечения */
#ifdef _GNU_SOURCE
char domainname[]; /* доменное имя NIS или YP */
#endif
};

Размеры массивов в struct utsname не определены (см. ЗАМЕЧАНИЯ); поля завершаются
байтом с null ('\0').



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno
устанавливается в соответствующее значение.



ОШИБКИ


EFAULT Значение buf не определено.



СООТВЕТСТВИЕ СТАНДАРТАМ


POSIX.1-2001, POSIX.1-2008, SVr4. Вызов uname() отсутствует в 4.3BSD.

Поле domainname (доменное имя NIS или YP) является расширением GNU.



ЗАМЕЧАНИЯ


Это системный вызов, и операционная система, предположительно, знает своё имя,
номер выпуска и версию. Она также знает, на каком аппаратном обеспечении она
работает. Таким образом, четыре поля структуры несут полезную информацию. С другой
стороны, поле nodename её не несет: оно указывает имя машины в некой
неопределённой сети, но обычно машины находятся в более чем одной сети и имеют
несколько имён. Более того, ядро не может каким-либо образом получить информацию о
таких вещах, поэтому ему необходимо сообщить что же возвращать в этом поле. То же
относится и к дополнительному полю domainname.

С этой целью в Linux используются системные вызовы sethostname(2) и
setdomainname(2). Обратите внимание, что хотя не существует стандарта, который бы
указывал, что имя машины, установленное sethostname(2), является той же строкой,
что возвращается в поле nodename при вызове uname(), для Linux это именно так (в
действительности некоторые системы позволяют 256-символьное имя машины и
8-символьное имя узла). То же относится и к setdomainname(2) и полю domainname.

Длина полей в структуре может быть различна. Некоторые операционные системы или

Отличия между библиотекой C и ядром
Со временем, увеличение размера структуры utsname последовательно привело к трём
версиям uname(): sys_olduname() (слот __NR_oldolduname), sys_uname() (слот
__NR_olduname) и sys_newuname() (слот __NR_uname). В первой длина каждого поля
равна 9; во второй 65; в третьей также 65, но добавилось поле domainname.
Обёрточная функция uname() в glibc скрывает эти подробности от приложений, вызывая
самую новую версию системного вызова, предоставляемого ядром.



СМОТРИТЕ ТАКЖЕ


uname(1), getdomainname(2), gethostname(2), namespaces(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 353 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar