NOM¶
uname - Obtenir des informations à propos du noyau
SYNOPSIS¶
#include <sys/utsname.h>
int uname(struct utsname *buf);
DESCRIPTION¶
uname() renvoie les informations dans le tampon
buf. La structure
utsname est définie dans
<sys/utsname.h> comme
suit :
struct utsname {
char sysname[]; /* Nom du système d'exploitation
(par exemple, "Linux") */
char nodename[]; /* Nom dans "des réseaux définis
par l'implémentation" */
char release[]; /* release du système d'exploitation
(par exemple "2.6.28") */
char version[]; /* version du système d'exploitation */
char machine[]; /* Identifiant du matériel */
#ifdef _GNU_SOURCE
char domainname[]; /* nom de domaine NIS ou YP */
#endif
};
La longueur des chaînes de la
struct utsname n'est pas
spécifiée (consultez la section NOTES), les champs se terminent par
un caractère nul ('\0').
VALEUR RENVOYÉE¶
S'il réussit, cet appel système renvoie 0. S'il échoue, il
renvoie -1 et remplit
errno en conséquence.
ERREURS¶
- EFAULT
- buf pointe en dehors de l'espace d'adressage
accessible
SVr4, POSIX.1-2001. Il n'y a pas d'appel
uname() dans BSD 4.3.
Le champ
domainname (nom de domaine NIS ou YP) est une extension Gnu.
NOTES¶
Ceci est un appel système, et le système d'exploitation est
supposé connaître son nom, et ses numéros de version et de mise
à jour. Il connaît également le matériel sur lequel il
tourne, ainsi les quatre premiers champs de la structure sont significatifs.
En revanche, le champ
nodename n'est pas significatif : il donne
le nom de la machine dans un réseau non précisé, mais
généralement les machines sont connectées à plusieurs
réseaux et ont plusieurs noms. De plus, le noyau n'a pas de moyen de
connaître ces informations, et on doit les lui fournir. Ceci est vrai
aussi pour le champ supplémentaire
domainname.
À cette fin, Linux utilise les appels système
sethostname(2) et
setdomainname(2). Notez qu'aucun standard ne dit que le nom d'hôte
défini par
sethostname(2) représente la même chaîne
que le champ
nodename de la structure renvoyée par
uname()
(de fait, certains systèmes autorisent un nom d'hôte de 256 octets
et un nom de nœud sur 8 octets), mais c'est le cas sous Linux. La
même chose est vraie pour
setdomainname(2) et le champ
domainname.
La longueur des champs de la structure varie. Certains systèmes
d'exploitation ou bibliothèques utilisent des valeurs en dur de 9, 33,
65, ou 257. D'autres systèmes utilisent
SYS_NMLN,
_SYS_NMLN,
UTSLEN ou
_UTSNAME_LENGTH. Clairement, il faut
éviter d'utiliser ces constantes, employez plutôt sizeof(...). On
choisit souvent la valeur 257 qui permet de stocker un nom d'hôte
Internet entier.
Une partie des informations utsname est aussi accessible par
/proc/sys/kernel/{
ostype,
hostname,
osrelease,
version,
domainname}.
Interface noyau sous-jacente¶
Avec le temps, l'augmentation de la taille de la structure
utsname a
conduit à 3 versions successives de
uname() :
sys_olduname() (entrée
__NR_oldolduname),
sys_uname() (entrée
__NR_olduname) et
sys_newuname()
(entrée
__NR_uname). La première utilisait une longueur de 9
pour tous les champs ; la seconde utilisait 65 ; et la
troisième une longueur de 65 également mais avec un champ
domainname supplémentaire. La fonction
uname() de la glibc
cache ces détails aux applications, en appelant la version la plus
récente de ces appels système fournie par le noyau.
VOIR AUSSI¶
uname(1),
getdomainname(2),
gethostname(2)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».