table of contents
- bullseye 4.10.0-1
- bullseye-backports 4.17.0-2~bpo11+1
- testing 4.18.0-1
- unstable 4.18.0-1
UNAME(2) | Linux-Programmierhandbuch | UNAME(2) |
BEZEICHNUNG¶
uname - Name und Informationen über den laufenden Kernel abfragen
ÜBERSICHT¶
#include <sys/utsname.h>
int uname(struct utsname *Puffer);
BESCHREIBUNG¶
uname gibt Systeminformationen in der Struktur zurück, auf die Puffer Puffer zeigt. Die Struktur utsname wird in <sys/utsname.h> definiert:
struct utsname {
char sysname[]; /* Name des Betriebssystems (z.B. »Linux«) */
char nodename[]; /* Name innerhalb »irgendeines durch die
Implementierung definierten Netzwerks« */
char release[]; /* Betriebssystem-Release (z.B. »2.6.28«) */
char version[]; /* Betriebssystem-Version */
char machine[]; /* Hardware-Bezeichner */ #ifdef _GNU_SOURCE
char domainname[]; /* NIS- oder YP-Domain-Name */ #endif };
Die Länge der Felder in einem struct utsname wird nicht angegeben (lesen Sie die ANMERKUNGEN); die Felder werden durch ein NULL-Byte beendet ('\0').
RÜCKGABEWERT¶
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.
FEHLER¶
- EFAULT
- Puffer ist nicht gültig.
KONFORM ZU¶
POSIX.1-2001, POSIX.1-2008, SVr4. Es gibt in 4.3BSD keinen Aufruf für uname().
Das domainname-Mitglied (der NIS- oder YP-Domain-Name) ist eine GNU-Erweiterung.
ANMERKUNGEN¶
Dies ist ein Systemaufruf und das Betriebssystem kennt wahrscheinlich seinen Namen, das Release und die Version. Es weiß außerdem, auf welcher Hardware er ausgeführt werden kann. Daher sind vier der Felder der Struktur sinnvoll. Andererseits ist das Feld nodename sinnlos: Es gibt den Namen der Maschine in einigen nicht definierten Netzwerken an, typische Maschinen befinden sich aber in mehr als einem Netzwerk und haben mehrere Namen. Zudem hat der Kernel keine Möglichkeit etwas über solche Dinge zu wissen, daher muss ihm gesagt werden, was er hier antworten soll, Das gleiche gilt für das zusätzliche Feld domainname.
Zu diesem Zweck benutzt Linux die Systemaufrufe sethostname(2) und setdomainname(2). Beachten Sie, dass es dabei keinen Standard gibt, der sagt, dass der Rechnername, der durch sethostname(2) gesetzt wird, die gleiche Zeichenkette wie das Feld nodename in der von uname() zurückgegebenen Struktur hat (allerdings erlauben einige Systeme einen 256 Byte langen Rechnernamen und einen 8 Byte langen Knotennamen), aber auf Linux ist dies der Fall. Das gleiche gilt für setdomainname(2) und das Feld domainname.
Die Länge der Felder in den Strukturen variiert. Einige Betriebssysteme oder Bibliotheken benutzen hart kodierte 9 oder 33 oder 65 oder 257. Andere Systeme benutzen SYS_NMLN oder _SYS_NMLN oder UTSLEN oder _UTSNAME_LENGTH. Offensichtlich ist es eine schlechte Idee, einige dieser Konstanten zu benutzen; benutzen Sie nur sizeof(…). Oft wird 257 gewählt, um Raum für einen Internet-Rechnernamen zu haben.
Auf einen Teil der Information in »utsname« kann auch über /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname} zugegriffen werden.
Unterschiede C-Bibliothek/Kernel¶
Im Laufe der Zeit hat das Vergößern der Struktur utsname zu drei aufeinanderfolgenden Versionen von uname() geführt: sys_olduname() (Slot __NR_oldolduname), sys_uname() (Slot __NR_olduname) und sys_newuname() (Slot __NR_uname). Der erste benutzte die Länge 9 für alle Felder, der zweite benutzte 65, der dritte benutzt auch 65, fügt aber das Feld domainname hinzu. Die Glibc-Wrapper-Funktion uname() versteckt diese Einzelheiten vor Anwendungen durch Aufrufen der aktuellsten Version des vom Kernel bereitgestellten Systemaufrufs.
SIEHE AUCH¶
uname(1), getdomainname(2), gethostname(2), uts_namespaces(7)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>, Patrick Rother <krd@gulu.net>, Chris Leick <c.leick@vollbio.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
10. Oktober 2019 | Linux |