uname(2)

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

LIBRARY
Standard C library (libc, -lc)

СИНТАКСИС
#include <sys/utsname.h>

int uname(struct utsname *buf);

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

    struct utsname {
        char sysname[];    /* Operating system name (e.g., "Linux") */
        char nodename[];   /* Name within communications network
                              to which the node is attached, if any */
        char release[];    /* Operating system release
                              (e.g., "2.6.28") */
        char version[];    /* Operating system version */
        char machine[];    /* Hardware type identifier */
    #ifdef _GNU_SOURCE
        char domainname[]; /* NIS or YP domain name */
    #endif
    };

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.

ОШИБКИ

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

СТАНДАРТЫ
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD.

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

ЗАМЕЧАНИЯ
The kernel has the name, release, version, and supported machine type built in. Conversely, the nodename field is configured by the administrator to match the network (this is what the BSD historically calls the "hostname", and is set via sethostname(2)). Similarly, the domainname field is set via setdomainname(2).

The length of the fields in the struct varies. Some operating systems or libraries use a hardcoded 9 or 33 or 65 or 257. Other systems use SYS_NMLN or _SYS_NMLN or UTSLEN or _UTSNAME_LENGTH. Clearly, it is a bad idea to use any of these constants; just use sizeof(...). SVr4 uses 257, "to support Internet hostnames" — this is the largest value likely to be encountered in the wild.

Часть информации из структуры utsname может быть получена также через /proc/sys/kernel/ {ostype, hostname, osrelease, version, 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), uts_namespaces(7)

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 (https://www.gnu.org/licenses/gpl-3.0.html) или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.