6.4 uname – Informationen zum lokalen System erfragen
 
Mithilfe der POSIX.1-konformen Funktion uname() können Sie sich Information zum lokalen System erfragen. Die Syntax:
#include <sys/utsname.h>
int uname(struct utsname *buf);
Diese Funktion gibt die Systeminformationen in buf zurück. Die Struktur utsname ist in der Headerdatei <sys/utsname.h> wie folgt definiert:
Tabelle 6.4
Die Struktur utsname in der Headerdatei <sys/utsname.h>
Strukturvariablen
|
Bedeutung
|
char sysname[]
|
Betriebssystemname
|
char nodename[ ]
|
Knotennamen in einem Netzwerk
|
char release[ ]
|
Aktueller Release-Name
|
char version[ ]
|
Aktueller Versions-Name des Release
|
char machine[ ]
|
Name der Hardware die auf dem System läuft
|
char domainname[ ] oder
char domainname[ ]
|
Name der Domain vom Knotenpunkt im Netzwerk (nicht POSIX.1)
|
Die Größe der Arrays wird nicht von POSIX.1 vorgeschrieben und ist systemabhängig. Der einfachste Weg, eine Überschreibung zu vermeiden, ist die Verwendung von sizeof(), womit die maximale Länge des Arrays ermittelt wird.
Bei Erfolg wird 0 und im Fehlerfall -1 zurückgegeben. Ist im Falle eines Fehlers errno mit EFAULT gesetzt, ist buf nicht gültig. Hierzu die Funktion uname() im Einsatz:
/* utsname.c */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/utsname.h>
#include <string.h>
int main(int argc, char *argv[]) {
struct utsname uts_info;
if( uname(&uts_info) < 0 ) {
fprintf(stderr, "Fehler bei uname()\n");
exit (EXIT_FAILURE);
}
printf("Folgende Angaben wurden ermittelt: \n");
printf("Betriebssystem : %s\n", uts_info.sysname);
printf("Knotenname : %s\n", uts_info.nodename);
printf("Release : %s\n", uts_info.release);
printf("Version : %s\n", uts_info.version);
printf("Architektur : %s\n", uts_info.machine);
#define __USE_GNU
printf("Domainname : %s\n", uts_info.__domainname);
return EXIT_SUCCESS;
}
Das Programm bei der Ausführung:
you@host > ./utsname
Folgende Angaben wurden ermittelt:
Betriebssystem : Linux
Knotenname : mering
Release : 2.6.10–5–386
Version : #1 Tue Apr 5 12:12:40 UTC 2005
Architektur : i686
Domainname : (none)
|