uname

UNAME(2)               Manuale del programmatore di Linux               UNAME(2)



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 ⟨⟩.



Linux                             22 marzo 2021                         UNAME(2)