Provided by:
manpages-ru_0.98-4_all 
ИМЯ
uname - получить имя и информацию о текущем ядре
ОБЗОР
#include <sys/utsname.h>
int uname(struct utsname *buf);
ОПИСАНИЕ
uname возвращает системную информацию в структуре, на которую указывает
buf. Структура utsname определяется в <sys/utsname.h>:
struct utsname {
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
#ifdef _GNU_SOURCE
char domainname[];
#endif
};
Длина массива в struct utsname не задаётся; поля завершаются нулевым
символом.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. В случае ошибки возвращается -1 и
значение errno устанавливается соответствующим образом.
ОШИБКИ
EFAULT Неправильное значение buf .
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX, X/OPEN. В BSD 4.3 вызова uname не существует.
Имя домена domainname для члена домена (домена NIS или YP) является
расширением GNU.
ЗАМЕЧАНИЯ
Это системный вызов и операционная система видимо знает своё имя,
подверсию и версию. Она также знает на какой платформе она запущена.
Таким образом четыре поля, описанной выше структуры являются важными. С
другой стороны, поле nodename является менее важным: оно содержит имя
текущей машины в какой-либо неопределённой сети, но обычно машины
входят более чем в одну сеть и имеют несколько имён. У ядра нет способа
узнать об этих вещах, так что ему необходимо сказать, что здесь
отвечать. Тоже касается и другого дополнительно поля domainname.
Чтобы подсказать ядру, в Linux используются системные вызовы
sethostname(2) и setdomainname(2). Заметим, что не существует
стандарта, чтобы сказать имя узла какой длины устанавливается вызовом
sethostname(2), но именно это имя будет в поле nodename структуры,
возвращаемой вызовом uname (в самом деле, некоторые системы разрешают
256-байтовые имена узлов и только 8-байтовые nodename), но это так в
Linux. Это же касается и вызова setdomainname(2) и поля domainname.
Длина указанных выше полей в структуре может быть разной. Некоторые
операционные системы или библиотеки используют жёсткие ограничения 9
или 33, или 65, или 257. Другие системы используют SYS_NMLN или
_SYS_NMLN, или UTSLEN, или _UTSNAME_LENGTH. Использование таких
констант -- это плохая идея -- просто используйте sizeif(...). Часто
257 выбирается, чтобы соответствовать имени узла в сети Интернет.
В Linux было три системных вызова uname(). Первый использовал длину 9,
второй использовал 85, а третий также использует 65, но добавляет поле
domainname field.
Часть информации, возвращаемой данным системным вызовом также доступна
через sysctl и через файлы /proc/sys/kernel/{ostype, hostname,
osrelease, version, domainname}.
СМОТРИ ТАКЖЕ
uname(1), getdomainname(2), gethostname(2)
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2004