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)