gethostname(2) System Calls Manual gethostname(2) NAZWA gethostname, sethostname - pobiera/ustawia nazwe stacji BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include 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 wczesniejsze */ _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 wlacznie: _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500) OPIS Wywolania systemowe sluza do uzyskania dostepu lub zmiany systemowej nazwy komputera. Mowiac precyzyjniej, dzialaja na nazwie komputera, zwiazanej z przestrzenia nazw UTS procesu wywolujacego. sethostname() ustawia nazwe komputera na wartosc okreslona w tablicy znakowej name. Argument len argument okresla liczbe bajtow w name (dlatego name nie wymaga koncowego bajtu null). gethostname() zwraca nazwe komputera, zakonczona znakiem null, w tablicy znakowej name, o dlugosci len bajtow. Jesli zakonczona znakiem null nazwa komputera jest zbyt dluga, aby sie zmiescic, to nazwa jest obcinana i nie jest zwracany zaden blad (ale zob. UWAGI ponizej). POSIX.1 okresla, ze jesli takie obciecie wystepuje, to nie jest okreslone, czy zwracany bufor zawiera koncowy bajt null. WARTOSC ZWRACANA Po pomyslnym zakonczeniu zwracane jest zero. Po bledzie zwracane jest -1 i ustawiane jest errno wskazujac blad. BLEDY EFAULT name jest nieprawidlowym adresem. EINVAL len jest ujemne lub, przy sethostname(), len jest wieksze niz maksymalny dopuszczalny rozmiar. ENAMETOOLONG (glibc gethostname()) len jest mniejsze niz rzeczywisty rozmiar. Przed glibc 2.1, glibc w tym przypadku uzywalo EINVAL. EPERM W przypadku sethostname(), wywolujacy nie posiadal przywileju (ang. capability) CAP_SYS_ADMIN w przestrzeni nazw uzytkownika zwiazanej z jego przestrzenia nazw UTS (zob. namespaces(7)). WERSJE SUSv2 gwarantuje, ze ,,nazwy stacji sa ograniczone do 255 bajtow". POSIX 1003.1-2001 gwarantuje, ze ,,nazwy stacji (bez konczacego NUL) sa ograniczone do HOST_NAME_MAX bajtow". W Linuksie HOST_NAME_MAX jest zdefiniowane z wartoscia 64, co stanowilo limit od Linuksa 1.0 (wczesniejsze jadra narzucaly limit 8 bajtow). Roznice biblioteki C/jadra Biblioteka GNU C nie uzywa wywolania systemowego gethostname(); w zamian korzysta z gethostname() jako funkcji bibliotecznej wywolujacej uname(2) i kopiuje do len bajtow ze zwracanego pola nodename do name. Po przeprowadzeniu kopiowania, funkcja sprawdza, czy dlugosc nodename byla wieksza lub rowna len i jesli tak bylo, funkcja zwraca -1 z errno ustawionym na ENAMETOOLONG; w takim przypadku koncowy bajt null nie jest umieszczany w zwracanym name. STANDARDY gethostname() POSIX.1-2008. sethostname() Brak. HISTORIA SVr4, 4.4BSD (interfejsy te pierwotnie pojawily sie w 4.2BSD). POSIX.1-2001 i POSIX.1-2008 definiuje gethostname() ale nie sethostname(). Wersje glibc przed glibc 2.2 obsluguja przypadek, w ktorym dlugosc nodename byla wieksza lub rowna len w odmienny sposob: nic nie jest kopiowane do name, a funkcja zwraca -1 z errno ustawionym na ENAMETOOLONG. ZOBACZ TAKZE hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Andrzej Krzysztofowicz i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. gethostname(2)