Provided by: manpages-it-dev_4.13-4_all bug

NOME

       uname - restituisce nome e informazioni sul kernel attuale

SINTASSI

       #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  successo  restituisce  zero.  In  caso di errore restituisce -1, e errno verrà impostato di
       conseguenza.

ERRORI

       EFAULT bufnon è valido.

CONFORME A

       POSIX.1-2001, POSIX.1-2008, SVr4. 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 la libreria C e il 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), uts_namespaces(7)

COLOPHON

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

TRADUZIONE

       La   traduzione   italiana   di   questa  pagina  di  manuale  è  stata  creata  da  Goffredo  Baroncelli
       <kreijack@usa.net>, Giulio Daprelà <giulio@pluto.it>,  Elisabetta  Galli  <lab@kkk.it>  e  Marco  Curreli
       <marcocurreli@tiscali.it>

       Questa  traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o successiva
       per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

       Per segnalare errori nella traduzione  di  questa  pagina  di  manuale  inviare  un  messaggio  a  pluto-
       ildp@lists.pluto.it.

Linux                                            10 ottobre 2019                                        UNAME(2)