Scroll to navigation

uname(2) System Calls Manual 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.

ОШИБКИ

Значение 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 (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

5 февраля 2023 г. Linux man-pages 6.03