Provided by: manpages-it-dev_4.15.0-9_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 per indicare l'errore.

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.13 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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.