table of contents
- bookworm-backports 1:4.24.0-2~bpo12+1
- testing 1:4.24.0-2
- unstable 1:4.24.0-2
uname(2) | System Calls Manual | uname(2) |
NAZWA¶
uname - pobiera nazwę oraz informacje o bieżącym jądrze
BIBLIOTEKA¶
Standardowa biblioteka C (libc, -lc)
SKŁADNIA¶
#include <sys/utsname.h>
int uname(struct utsname *buf);
OPIS¶
uname() zwraca informacje systemowe w strukturze, na którą wskazuje buf. utsname jest zdefiniowana w <sys/utsname.h>:
struct utsname {
char sysname[]; /* Nazwa systemu operacyjnego (np. "Linux") */
char nodename[]; /* Nazwa w sieci komunikacyjnej, do której
węzeł jest dołączony (o ile występuje) */
char release[]; /* Wydanie systemu operacyjnego
(np. "2.6.28") */
char version[]; /* Wersja systemu operacyjnego */
char machine[]; /* Identyfikator typu sprzętowego */ #ifdef _GNU_SOURCE
char domainname[]; /* Nazwa domeny NIS lub YP */ #endif };
Długość tablicy w struct utsname jest nieokreślona (zob. UWAGI); pola są zakończone bajtem null ('\0').
WARTOŚĆ ZWRACANA¶
Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i ustawiane errno, wskazując błąd.
BŁĘDY¶
- EFAULT
- buf nie jest prawidłowe.
STANDARDY¶
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD.
Składowa domainname (nazwa domeny NIS lub YP) jest rozszerzeniem GNU.
UWAGI¶
Jądro ma wbudowane: nazwę, wydanie, wersję i obsługiwany typ sprzętowy. Pole nodename jest natomiast konfigurowane przez administratora, właściwie do sieci (BSD historycznie nazywało je „hostname”; jest ustawiane za pomocą sethostname(2)). Pole domainname jest z kolei ustawiane przez setdomainname(2).
Długość pól w strukturze jest zróżnicowana. Niektóre systemy operacyjne lub biblioteki używają stałej długości 9 lub 33, lub 65, lub 257. Inne systemy operacyjne korzystają z SYS_NMLN lub _SYS_NMLN, lub UTSLEN, lub _UTSNAME_LENGTH. Jest zatem złym pomysłem używanie którejś z tych stałych; proszę korzystać z sizeof(...). SVr4 używa długości 257, „aby obsługiwać internetowe nazwy stacji” — jest to prawdopodobnie największa wartość, jaką można spotkać w praktyce.
Część informacji utsname jest dostępna rownież za pomocą /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname}.
Różnice biblioteki C/jądra¶
Z biegiem czasu, zwiększający się rozmiar struktury utsname spowodował powstanie trzech kolejnych wersji uname(): sys_olduname() (slot __NR_oldolduname), sys_uname() (slot __NR_olduname) oraz sys_newuname() (slot __NR_uname). Pierwsza korzysta z długości 9 we wszystkich polach; druga używa 65; trzecia — również 65, lecz dodaje pole domainname. Funkcja opakowująca uname() z glibc ukrywa te detale przed aplikacjami, przywołując najnowszą wersję wywołania systemowego zapewnianą przez jądro.
ZOBACZ TAKŻE¶
uname(1), getdomainname(2), gethostname(2), uts_namespaces(7)
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
5 lutego 2023 r. | Linux man-pages 6.03 |