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