GETHOSTNAME(2)

NOM
gethostname, sethostname - Lire et écrire le nom d'hôte

SYNOPSIS
#include <unistd.h>

int gethostname(char *name, size_t len);
int sethostname(const char *name, size_t len);

Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

gethostname() :
    Depuis la glibc 2.12 : _BSD_SOURCE || _XOPEN_SOURCE >= 500
    || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200112L
sethostname() :
    _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

DESCRIPTION
Ces appels système sont utilisés pour obtenir ou changer le nom d'hôte du processeur en cours. sethostname() définit le nom d'hôte à la valeur fournie dans le tableau d'octets name. Le paramètre len indique le nombre d'octets dans nom (ainsi, name n'a pas à contenir d'octet nul de fin). gethostname() renvoie le nom d'hôte, avec un octet nul de fin, dans le tableau d'octets name, qui a une longueur de len octets. Si le nom d'hôte avec son octet nul de fin est trop long pour tenir, alors le nom est tronqué, et aucune erreur n'est renvoyée (mais consultez la section NOTES ci-dessous). POSIX.1-2001 indique que dans le cas ou le nom est tronqué, il n'est pas spécifié si le tableau renvoyé inclut ou pas un octet nul de fin.

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
    name pointe en dehors de l'espace d'adressage accessible.

EINVAL
    len est négatif ou, pour sethostname(), len est plus grand que la taille maximale autorisée.

ENAMETOOLONG
    (gethostname() de la glibc) len est plus petit que la véritable taille (avant la glibc 2.1, la glibc utilisait EINVAL dans ce cas).

EPERM
    Pour sethostname(), l'appelant n'a pas la capacité CAP_SYS_ADMIN.

CONFORMITÉ
SVr4, BSD 4.4 (ces interfaces sont apparues dans BSD 4.2). POSIX.1-2001 définit gethostname() mais pas sethostname().

NOTES
SUSv2 garantit que « les noms d'hôtes sont limités à 255 octets ». POSIX.1-2001 garantit que « les noms d'hôtes (non compris le caractère NUL final) sont limités à HOST_NAME_MAX octets ». Sous Linux, HOST_NAME_MAX vaut la valeur 64, qui a été la limite depuis Linux 1.0 (les noyaux plus anciens imposaient une limite de 8 octets).

  Notes sur la glibc
La bibliothèque C GNU n'utilise pas l'appel système gethostname() ; à la place, gethostname() est implémentée comme une fonction de bibliothèque qui appelle uname(2) et copie jusqu'à len octets depuis le champ nodename renvoyé dans name. Après la copie, la fonction vérifie si la longueur de nodename était supérieure ou égale à len, et si c'est le cas, la fonction renvoie -1 en positionnant errno à ENAMETOOLONG. Les versions de glibc antérieures à 2.2 gèrent le cas où la longueur de nodename est supérieur ou égal à len de façon différente : rien n'est copié dans name, et la fonction renvoie -1 en positionnant errno à ENAMETOOLONG ; dans ce cas, aucun caractère nul de fin n'est inclus dans la valeur name renvoyée. Les versions de la glibc antérieures à la version 2.2 prennent en charge différemment le cas où la longueur de nodename est supérieure ou égal à len : rien n'est copié dans name et la fonction renvoie -1 en positionnant errno à ENAMETOOLONG.

VOIR AUSSI
getdomainname(2), setdomainname(2), uname(2).

COLOPHON
Cette page fait partie de la publication 3.70 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 à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».