Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       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