bionic (2) uname.2.gz

Provided by: manpages-it_3.73-2_all bug

NOME

       uname - restituisce nome e informazioni sul kernel attuale

INTASSI

       #include <sys/utsname.h>

       int uname(struct utsname *buf);

DESCRIZIONE

       uname()  restituisce  informazioni  sul  sistema  attraverso  il  puntatore  buf.  La struttura utsname è
       definita in <sys/utsname.h>:

           struct utsname {
               char sysname[];    /* Nome del sistema operativo (per esempio "Linux") */
               char nodename[];   /* Nome all'interno di "qualche rete definita
                                     dall'implementazione" */
               char release[];    /* rilascio del SO (per esempio "2.6.28") */
               char version[];    /* versione del SO */
               char machine[];    /* identificatore hardware */
           #ifdef _GNU_SOURCE
               char domainname[];   /* nome di dominio NIS o YP */
           #endif
           };

       La lunghezza degli array in una struttura utsname non è specificata (vedere NOTE); 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.  Esso 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  dica  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  si
       sceglie 257 per avere spazio per un nome di host internet.

       Parte  dell'informazione  utsname  è  anche  accessibile  attraverso  /proc/sys/kernel/{ostype, hostname,
       osrelease, version, domainname}.

   Differenze tra le ABI della libreria C e del kernel
       Col tempo, aumenti nella dimensione della struttura utsname 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), namespaces(7)

COLOPHON

       Questa  pagina fa parte del rilascio 3.73 del progetto Linux man-pages.  Una descrizione del progetto, le
       istruzioni per la  segnalazione  degli  errori,  e  l'ultima  versione  di  questa  pagina  si  trova  su
       http://www.kernel.org/doc/man-pages/.

       La  versione  italiana  fa  parte  del  pacchetto  man-pages-it  v.  3.73, a cura di: ILDP "Italian Linux
       Documentation Project" http://www.pluto.it/ildp
       Per la traduzione in italiano si può fare riferimento a http://www.pluto.it/ildp/collaborare/
       Segnalare eventuali errori di traduzione a ildp@pluto.it