Provided by: manpages-it_2.80-3_all bug

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)