gethostname(2) System Calls Manual gethostname(2) BEZEICHNUNG gethostname, sethostname - bestimmt/setzt den Rechnernamen BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include int gethostname(char *name, size_t Lange); int sethostname(const char *name, size_t Lange); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): gethostname(): _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L || /* Glibc 2.19 und alter */ _BSD_SOURCE sethostname(): Seit Glibc 2.21: _DEFAULT_SOURCE In Glibc 2.19 und 2.20: _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500) Bis einschliesslich Glibc 2.19: _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500) BESCHREIBUNG Mit diesen Systemaufrufen erfragen und setzen Sie den Rechnernamen des aktuellen Prozessors. Genauer ausgedruckt, arbeiten sie mit dem Rechnernamen, der dem UTS-Namensraum des aufrufenden Prozesses zugeordnet ist. sethostname() setzt den Rechnernamen auf den im Zeichenfeld (character array) name ubergebenen Wert. Das Argument Lange gibt die Anzahl der Bytes in name an. (Deshalb erfordert name kein abschliessendes Null-Byte.) gethostname() gibt den (mit einem Nullbyte abgeschlossenen) Rechnernamen der Lange Lange Byte im Zeichenfeld name zuruck. Ist der Rechnername zu gross fur name, wird er ohne Fehlermeldung gekurzt (siehe aber die ANMERKUNGEN unten). POSIX.1 legt nicht fest, ob im Fall einer solchen Kurzung der zuruckgegebene Puffer ein abschliessendes Nullbyte enthalt. RUCKGABEWERT Bei Erfolg wird Null zuruckgegeben. Bei einem Fehler wird -1 zuruckgegeben und errno gesetzt, um den Fehler anzuzeigen. FEHLER EFAULT name ist eine ungultige Adresse. EINVAL Lange ist negativ oder das Argument Lange fur sethostname() uberschreitet die maximal zulassige Grosse. ENAMETOOLONG gethostname() der Glibc gibt damit an, das Lange kleiner ist als die tatsachliche Grosse. (Vor Version 2.1 verwendet Glibc in diesem Fall EINVAL.) EPERM Der Aufruf von sethostname() erfolgte ohne die CAP_SYS_ADMIN-Capability im Benutzernamensraum, der seinem UTS-Namensraum zugeordnet ist (siehe namespaces(7)). VERSIONEN SUSv2 garantiert, dass >>Rechnernamen auf 255 Byte begrenzt sind<<. POSIX.1 garantiert, dass >>Rechnernamen (ohne das abschliessende Nullbyte) auf HOST_NAME_MAX byte begrenzt sind<<. Fur Linux ist HOST_NAME_MAX seit Version 1.0 auf 64 gesetzt (fruhere Kernel setzten eine Grenze von 8 byte). Unterschiede C-Bibliothek/Kernel Die GNU-C-Bibliothek implementiert gethostname() nicht als Systemaufruf, sondern als Bibliotheksfunktion. Diese Funktion ruft uname(2) auf und kopiert bis zu Lange Byte aus dem zuruckgegebenen Feld nodename nach name. Nach dem Kopieren pruft die Funktion, ob die Lange von nodename grosser als oder gleich Lange ist. In diesem Fall gibt sie -1 zuruck und setzt errno auf ENAMETOOLONG; der zuruckgegebene name enthalt dann kein abschliessendes Nullbyte. STANDARDS gethostname() POSIX.1-2008. sethostname() Keine. GESCHICHTE SVr4, 4.4BSD (diese Schnittstellen kamen erstmals in 4.2BSD vor). POSIX.1-2001 und POSIX.1-2008 spezifizieren gethostname(), aber nicht sethostname(). Glibc-Versionen vor 2.2 verhielten sich anders, wenn die Lange von nodename grosser als oder gleich Lange war: sie kopierten nichts nach name, gaben -1 zuruck und setzten errno auf ENAMETOOLONG. SIEHE AUCH hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Rene Tschirley , Martin Eberhard Schauer und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 gethostname(2)