Provided by:
manpages-it_2.80-3_all 
NOME
uname - restituisce nome e informazioni sul kernel attuale
SINTASSI
#include <sys/utsname.h>
int uname(struct utsname *buf);
DESCRIZIONE
uname() restituisce informazione sul sistema attraverso il puntatore
buf. La struttura utsname è definita in <sys/utsname.h>:
struct utsname {
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
#ifdef _GNU_SOURCE
char domainname[];
#endif
};
La lunghezza degli array in una struttura utsname non è specificata; i
campi sono terminati con un byte nullo (’\0’).
VALORE RESTITUITO
In caso di esito positivo viene restituito zero, altrimenti -1 e errno
viene impostato di conseguenza.
ERRORI
EFAULT buf non è valido.
CONFORME A
SVr4, POSIX.1-2001. Non c’è alcuna chiamata a uname() in 4.3BSD.
Il membro domainname (il nome di dominio NIS o YP) è un’estensione GNU.
NOTE
Questa è una chiamata di sistema, e si presume che il sistema operativo
sappia il suo nome, rilascio e versione. Essa inoltre sa su quale
hardware funziona. Quindi quattro dei campi della struttura sono
significativi. D’altra parte il campo nodename è insignificante: esso
dà il nome della macchina presente in qualche rete indefinita, ma
tipicamente le macchine si trovano in più di una rete e hanno più nomi.
Inoltre il kernel non ha modo di sapere queste cose, quindi bisogna
dirgli cosa rispondere. Lo stesso vale per il campo aggiuntivo
domainname.
A questo scopo Linux usa le chiamate di sistema sethostname(2) e
setdomainname(2). Notare che non c’è alcuno standard che dice che il
nome host impostato da sethostname(2) è la stessa stringa del campo
nodename della struttura restituita da uname() (in verità, alcuni
sistemi permettono un nome host di 256 byte e un nome nodo di 8 byte),
ma ciò è vero in Linux. Lo stesso vale per setdomainname(2) e per il
campo domainname.
La lunghezza dei campi nella struttura varia. Alcuni sistemi operativi
o librerie usano un valore prefissato 9 o 33 o 65 o 257. Altri sistemi
usano SYS_NMLN o _SYS_NMLN o UTSLEN o _UTSNAME_LENGTH. E’ chiaramente
una pessima idea usare una qualunque di queste costanti; si usi solo
sizeof(...). Spesso è scelto 257 per avere spazio per un nome di host
internet.
Parte dell’informazione utsname è anche accessibile attraverso
sysctl(2) e attraverso /proc/sys/kernel/{ostype, hostname, osrelease,
version, domainname}.
Interfaccia del kernel sottostante
Col tempo, aumenti nella dimensione della struttura utsuname hanno
portato a tre versioni successive di uname(): sys_olduname() (slot
__NR_oldolduname), sys_uname() (slot __NR_olduname), e sys_newuname()
(slot __NR_uname). La prima usava la lunghezza 9 per tutti i campi; la
seconda usava 65; anche la terza usava 65, aggiungendo però il campo
domainname. La funzione wrapper di glibc, uname(), nasconde questi
dettagli alle applicazioni, invocando la versione più recente della
chiamata di sistema fornita dal kernel.
VEDERE ANCHE
uname(1), getdomainname(2), gethostname(2)