Provided by: manpages-pl-dev_4.26.0-1_all 

NAZWA
gethostname, sethostname - pobiera/ustawia nazwę stacji
BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)
SKŁADNIA
#include <unistd.h>
int gethostname(char *name, size_t len);
int sethostname(const char *name, size_t len);
Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):
gethostname():
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
|| /* glibc 2.19 i wcześniejsze */ _BSD_SOURCE
sethostname():
Od glibc 2.21:
_DEFAULT_SOURCE
W glibc 2.19 i 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Do glibc 2.19 włącznie:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
OPIS
Wywołania systemowe służą do uzyskania dostępu lub zmiany systemowej nazwy komputera. Mówiąc
precyzyjniej, działają na nazwie komputera, związanej z przestrzenią nazw UTS procesu wywołującego.
sethostname() ustawia nazwę komputera na wartość określoną w tablicy znakowej name. Argument len argument
określa liczbę bajtów w name (dlatego name nie wymaga końcowego bajtu null).
gethostname() zwraca nazwę komputera, zakończoną znakiem null, w tablicy znakowej name, o długości len
bajtów. Jeśli zakończona znakiem null nazwa komputera jest zbyt długa, aby się zmieścić, to nazwa jest
obcinana i nie jest zwracany żaden błąd (ale zob. UWAGI poniżej). POSIX.1 określa, że jeśli takie
obcięcie występuje, to nie jest określone, czy zwracany bufor zawiera końcowy bajt null.
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 name jest nieprawidłowym adresem.
EINVAL len jest ujemne lub, przy sethostname(), len jest większe niż maksymalny dopuszczalny rozmiar.
ENAMETOOLONG
(glibc gethostname()) len jest mniejsze niż rzeczywisty rozmiar. Przed glibc 2.1, glibc w tym
przypadku używało EINVAL.
EPERM W przypadku sethostname(), wywołujący nie posiadał przywileju (ang. capability) CAP_SYS_ADMIN w
przestrzeni nazw użytkownika związanej z jego przestrzenią nazw UTS (zob. namespaces(7)).
WERSJE
SUSv2 gwarantuje, że „nazwy stacji są ograniczone do 255 bajtów”. POSIX 1003.1-2001 gwarantuje, że „nazwy
stacji (bez kończącego NUL) są ograniczone do HOST_NAME_MAX bajtów”. W Linuksie HOST_NAME_MAX jest
zdefiniowane z wartością 64, co stanowiło limit od Linuksa 1.0 (wcześniejsze jądra narzucały limit 8
bajtów).
Różnice biblioteki C/jądra
Biblioteka GNU C nie używa wywołania systemowego gethostname(); w zamian korzysta z gethostname() jako
funkcji bibliotecznej wywołującej uname(2) i kopiuje do len bajtów ze zwracanego pola nodename do name.
Po przeprowadzeniu kopiowania, funkcja sprawdza, czy długość nodename była większa lub równa len i jeśli
tak było, funkcja zwraca -1 z errno ustawionym na ENAMETOOLONG; w takim przypadku końcowy bajt null nie
jest umieszczany w zwracanym name.
STANDARDY
gethostname()
POSIX.1-2008.
sethostname()
Brak.
HISTORIA
SVr4, 4.4BSD (interfejsy te pierwotnie pojawiły się w 4.2BSD). POSIX.1-2001 i POSIX.1-2008 definiuje
gethostname() ale nie sethostname().
Wersje glibc przed glibc 2.2 obsługują przypadek, w którym długość nodename była większa lub równa len w
odmienny sposób: nic nie jest kopiowane do name, a funkcja zwraca -1 z errno ustawionym na ENAMETOOLONG.
ZOBACZ TAKŻE
hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7)
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i 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.
Linux man-pages 6.9.1 2 maja 2024 r. gethostname(2)