Provided by: manpages-fr-dev_4.18.1-1_all bug

NOM

       errno - Code de la dernière erreur

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <errno.h>

DESCRIPTION

       Le fichier d'en-tête <errno.h> définit la variable de type entier errno qui est renseignée
       par les appels système et quelques fonctions de bibliothèque pour décrire  les  conditions
       de la survenue d'une erreur.

   errno
       La  valeur de errno n'est significative que lorsque la valeur de retour de l'appel système
       indique une erreur (c'est-à-dire -1 pour la plupart des appels système ; -1 ou  NULL  pour
       la  plupart  des  fonctions  de  bibliothèque) ;  une fonction qui réussit est autorisée à
       modifier errno. La valeur de errno n'est jamais mis à zéro par un  appel  système  ou  une
       fonction de bibliothèque.

       Pour certains appels système et fonctions de bibliothèque (par exemple getpriority(2)), -1
       est une valeur de retour correcte en cas de réussite. Dans de  tels  cas,  une  valeur  de
       retour  en  cas de réussite peut être distinguée d'un cas d'erreur en positionnant errno à
       zéro avant l'appel, puis, quand l'appel renvoie une valeur qui indique qu'une erreur a  pu
       se produire, en vérifiant si errno a une valeur non nulle.

       errno  est  définie  par la norme ISO C comme une « lvalue » modifiable de type int et n'a
       pas besoin d'être définie explicitement ; errno peut être une macro. errno est locale à un
       thread ;  lui  affecter une valeur dans un thread ne modifie pas sa valeur dans les autres
       threads.

   Numéros d'erreur et noms
       Les numéros d'erreur valables  sont  tous  des  nombres  positifs.  Le  fichier  d'en-tête
       <errno.h>  définit les noms symboliques pour chacun des numéros d'erreur possibles pouvant
       apparaître dans errno.

       Toutes les erreurs détaillées  dans  POSIX.1  doivent  avoir  des  valeurs  différentes  à
       l'exception de EAGAIN et EWOULDBLOCK qui peuvent avoir la même valeur. Sur Linux, ces deux
       erreurs ont la même valeur sur toutes les architectures.

       Les numéros d'erreur qui correspondent à chaque nom symbolique varient selon les  systèmes
       UNIX  et  c'est même le cas sous Linux pour des architectures différentes. Par conséquent,
       les valeurs numériques ne sont pas indiquées dans la liste des noms  d'erreur  ci-dessous.
       Les  fonctions  perror(3) et strerror(3) peuvent être utilisées pour convertir ces noms en
       leur message d'erreur textuel correspondant.

       Il est possible, sur n'importe quel système Linux, d'obtenir la liste  de  tous  les  noms
       d'erreurs  symboliques  et  leurs  numéros d'erreur correspondant en utilisant la commande
       errno(1) (faisant partie du paquet moreutils) :

           $ errno -l
           EPERM 1 Opération interdite
           ENOENT 2 Fichier ou répertoire inexistant
           ESRCH 3 Processus inexistant
           EINTR 4 Appel système interrompu
           EIO 5 Erreur d'entrée/sortie
           ...

       La commande errno(1) peut également être utilisée pour  rechercher  des  numéros  et  noms
       d'erreurs  spécifiques,  ainsi  que  chercher  des  erreurs  en  utilisant  les chaînes de
       description de l'erreur, comme dans l'exemple suivant :

           $ errno 2
           ENOENT 2 Fichier ou répertoire inexistant
           $ errno ESRCH
           ESRCH 3 Processus inexistant
           $ errno -s permission
           EACCES 13 Permission refusée

   Liste des noms d'erreur
       Dans la liste des noms d'erreurs symboliques ci-dessous, plusieurs noms sont marqués comme
       suit :

       POSIX.1-2001
              Le  nom  est défini par POSIX.1-2001 et est défini dans les versions ultérieures de
              POSIX.1 à moins qu'il ne soit indiqué autre chose.

       POSIX.1-2008
              Le nom est défini dans POSIX.1-2008 mais n'est pas présent dans les normes  POSIX.1
              antérieures.

       C99    Le nom est définit par C99.

       Ci-dessous  se  trouve  une  liste  des  noms d'erreurs symboliques qui sont définies sous
       Linux :

       E2BIG           Liste d'arguments trop longue (POSIX.1-2001).

       EACCES          Permission refusée (POSIX.1-2001)

       EADDRINUSE      Adresse déjà en cours d'utilisation (POSIX.1-2001).

       EADDRNOTAVAIL   Adresse non disponible (POSIX.1-2001).

       EAFNOSUPPORT    Famille d'adresses non prise en charge (POSIX.1-2001).

       EAGAIN          Ressource temporairement  indisponible  (peut  être  la  même  valeur  que
                       EWOULDBLOCK) (POSIX.1-2001)

       EALREADY        Connexion déjà en cours (POSIX.1-2001).

       EBADE           Échange non valable.

       EBADF           Mauvais descripteur de fichier (POSIX.1-2001).

       EBADFD          Descripteur de fichier dans un mauvais état.

       EBADMSG         Mauvais message (POSIX.1-2001).

       EBADR           Descripteur de requête non valable.

       EBADRQC         Code de requête non valable.

       EBADSLT         Emplacement (« Slot ») non valable.

       EBUSY           Périphérique ou ressource indisponible (POSIX.1-2001).

       ECANCELED       Opération annulée (POSIX.1-2001).

       ECHILD          Pas de processus enfant (POSIX.1-2001).

       ECHRNG          Numéro de canal hors intervalle.

       ECOMM           Échec de la communication lors de l'envoi.

       ECONNABORTED    Connexion abandonnée (POSIX.1-2001).

       ECONNREFUSED    Connexion refusée (POSIX.1-2001).

       ECONNRESET      Connexion réinitialisée (POSIX.1-2001).

       EDEADLK         Blocage d'une ressource évité (POSIX.1-2001).

       EDEADLOCK       Un  synonyme  de  EDEADLK  sur  la plupart des architectures. Sur quelques
                       architectures (comme Linux MIPS, PowerPC,  SPARC),  il  s'agit  d'un  code
                       d'erreur distinct « Erreur de blocage de verrou de fichier ».

       EDESTADDRREQ    Adresse de destination nécessaire (POSIX.1-2001).

       EDOM            Argument  mathématique  hors  du  domaine  de  définition  de  la fonction
                       (POSIX.1, C99).

       EDQUOT          Quota du disque dépassé (POSIX.1-2001).

       EEXIST          Fichier existant (POSIX.1-2001).

       EFAULT          Mauvaise adresse (POSIX.1-2001).

       EFBIG           Fichier trop grand (POSIX.1-2001).

       EHOSTDOWN       Hôte éteint.

       EHOSTUNREACH    Hôte non accessible (POSIX.1-2001).

       EHWPOISON       Une page mémoire a une erreur matérielle.

       EIDRM           Identificateur supprimé (POSIX.1-2001).

       EILSEQ          Multi-octet ou caractère large non autorisé ou incomplet (POSIX.1, C99).

                       Le texte montré ici correspond à la description des erreurs de la  glibc ;
                       cette erreur est décrite dans POSIX.1 comme « Séquence d'octet illégale ».

       EINPROGRESS     Opération en cours (POSIX.1-2001).

       EINTR           Appel système interrompu (POSIX.1-2001) ; consultez signal(7).

       EINVAL          Argument non valable (POSIX.1-2001).

       EIO             Erreur d'entrée/sortie (POSIX.1-2001).

       EISCONN         Socket connecté (POSIX.1-2001).

       EISDIR          Est un répertoire (POSIX.1-2001).

       EISNAM          Est un fichier de type nommé.

       EKEYEXPIRED     Clé expirée.

       EKEYREJECTED    La clé a été rejetée par le service.

       EKEYREVOKED     La clé a été révoquée.

       EL2HLT          Niveau 2 arrêté.

       EL2NSYNC        Niveau 2 non synchronisé.

       EL3HLT          Niveau 3 arrêté.

       EL3RST          Niveau 3 réinitialisé.

       ELIBACC         Impossible d'accéder à une bibliothèque partagée requise.

       ELIBBAD         Accès à une bibliothèque partagée corrompue.

       ELIBMAX         Tentative de liaison avec trop de bibliothèques partagées.

       ELIBSCN         Section .lib dans a.out corrompue

       ELIBEXEC        Impossible d'exécuter directement une bibliothèque partagée.

       ELNRNG          Numéro de lien hors d’intervalle.

       ELOOP           Trop de niveaux de liens symboliques (POSIX.1-2001).

       EMEDIUMTYPE     Mauvais type de média.

       EMFILE          Trop  de  fichiers  ouverts  (POSIX.1-2001).  Communément  causée  par  un
                       dépassement  de  la  limite  de  ressource  RLIMIT_NOFILE   décrite   dans
                       getrlimit(2).  Peut  aussi  être  causée  par  un dépassement de la limite
                       spécifiée dans /proc/sys/fs/nr_open.

       EMLINK          Trop de liens (POSIX.1-2001).

       EMSGSIZE        Message trop long (POSIX.1-2001).

       EMULTIHOP       Tentative de sauts multiples « Multihop » (POSIX.1-2001).

       ENAMETOOLONG    Nom de fichier trop long (POSIX.1-2001).

       ENETDOWN        Le réseau est désactivé (POSIX.1-2001).

       ENETRESET       Connexion annulée par le réseau (POSIX.1-2001).

       ENETUNREACH     Réseau inaccessible (POSIX.1-2001).

       ENFILE          Trop de fichiers ouverts pour le système (POSIX.1-2001). Sur  Linux,  cela
                       est  probablement  dû  au  dépassement  de la limite /proc/sys/fs/file-max
                       (consultez proc(5)).

       ENOANO          Pas de nœud d'index.

       ENOBUFS         Aucun espace de tampon disponible (POSIX.1 (option des FLUX XSI)).

       ENODATA         L'attribut nommé n'existe  pas  ou  le  processus  n'a  pas  accès  à  cet
                       attribut, consultez xattr(7).

                       Dans  POSIX.1-2001  (option  XSI  STREAMS), cette erreur est décrite comme
                       « Aucun message n'est disponible sur la tête de la  queue  de  lecture  du
                       FLUX ».

       ENODEV          Périphérique inexistant (POSIX.1-2001).

       ENOENT          Fichier ou répertoire inexistant (POSIX.1-2001).

                       Typiquement,  cette  erreur  survient  lors  qu'un  nom  de chemin indiqué
                       n'existe pas, ou que l'un des composants dans  le  préfixe  de  répertoire
                       d'un  nom  de  chemin n'existe pas, ou que le nom de chemin indiqué est un
                       lien symbolique sans cible.

       ENOEXEC         Erreur de format d'exécution (POSIX.1-2001).

       ENOKEY          Clé nécessaire non disponible.

       ENOLCK          Pas de verrou disponible (POSIX.1-2001).

       ENOLINK         Un lien a été disjoint (POSIX.1-2001).

       ENOMEDIUM       Aucun média trouvé.

       ENOMEM          Pas assez de mémoire, impossible d'allouer de la mémoire (POSIX.1-2001).

       ENOMSG          Pas de message du type attendu (POSIX.1-2001).

       ENONET          La machine n'est pas sur le réseau.

       ENOPKG          Paquet non installé.

       ENOPROTOOPT     Protocole indisponible (POSIX.1-2001).

       ENOSPC          Plus de place sur le périphérique (POSIX.1-2001).

       ENOSR           Pas de ressources FLUX (POSIX.1 (option des FLUX XSI)).

       ENOSTR          Pas un FLUX (POSIX.1 (option des FLUX XSI)).

       ENOSYS          Fonction non implémentée (POSIX.1-2001).

       ENOTBLK         Périphérique bloc nécessaire.

       ENOTCONN        Le socket n'est pas connecté (POSIX.1-2001).

       ENOTDIR         Pas un répertoire (POSIX.1-2001).

       ENOTEMPTY       Répertoire non vide (POSIX.1-2001).

       ENOTRECOVERABLE État non récupérable (POSIX.1-2008).

       ENOTSOCK        Pas un socket (POSIX.1-2001).

       ENOTSUP         Opération non prise en charge (POSIX.1-2001).

       ENOTTY          Opération de contrôle d'entrée/sortie inadéquate (POSIX.1-2001).

       ENOTUNIQ        Le nom sur le réseau n'est pas unique.

       ENXIO           Périphérique ou adresse inexistant (POSIX.1-2001).

       EOPNOTSUPP      Opération non prise en charge par le socket (POSIX.1-2001).

                       (ENOTSUP et EOPNOTSUPP ont la même valeur sous Linux, mais selon  POSIX.1,
                       ces codes d'erreurs devraient être différents).

       EOVERFLOW       Valeur   trop   grande   pour   être   stockée  dans  ce  type  de  donnée
                       (POSIX.1-2001).

       EOWNERDEAD      Propriétaire disparu (POSIX.1-2008).

       EPERM           Opération interdite (POSIX.1-2001).

       EPFNOSUPPORT    Famille de protocoles non prise en charge.

       EPIPE           Tube cassé (POSIX.1-2001).

       EPROTO          Erreur de protocole (POSIX.1-2001).

       EPROTONOSUPPORT Protocole non pris en charge (POSIX.1-2001).

       EPROTOTYPE      Mauvais type de protocole pour le socket (POSIX.1-2001).

       ERANGE          Résultat trop grand (POSIX.1, C99).

       EREMCHG         Adresse distante changée.

       EREMOTE         L'objet est distant.

       EREMOTEIO       Erreur d'entrées-sorties distante.

       ERESTART        L'appel système interrompu devrait être relancé.

       ERFKILL         Opération impossible à cause de RF-kill.

       EROFS           Système de fichiers en lecture seule (POSIX.1-2001).

       ESHUTDOWN       Impossible d'effectuer l'envoi après l'arrêt du point final du transport.

       ESPIPE          Recherche non valable (POSIX.1-2001).

       ESOCKTNOSUPPORT Type de socket non pris en charge.

       ESRCH           Processus inexistant (POSIX.1-2001).

       ESTALE          Gestion de fichier périmée (POSIX.1-2001).

                       Cette erreur peut se produire avec le système de fichiers NFS et d'autres.

       ESTRPIPE        Tube de flux cassé.

       ETIME           Délai expiré (POSIX.1 (option des FLUX XSI)).

                       (POSIX.1 stipule « délai du FLUX ioctl(2) dépassé.)

       ETIMEDOUT       Délai maximal de connexion écoulé (POSIX.1-2001).

       ETOOMANYREFS    Trop de références : impossible de copier (splice).

       ETXTBSY         Fichier texte occupé (POSIX.1-2001).

       EUCLEAN         La structure nécessite un nettoyage.

       EUNATCH         Pilote du protocole non attaché.

       EUSERS          Trop d'utilisateurs.

       EWOULDBLOCK     L'opération serait  bloquante  (peut  être  la  même  valeur  que  EAGAIN)
                       (POSIX.1-2001).

       EXDEV           Lien entre prériphériques non valalable (POSIX.1-2001).

       EXFULL          Échange plein.

NOTES

       Une erreur fréquente est de faire

           if (somecall() == -1) {
               printf("somecall() failed\n");
               if (errno == ...) { ... }
           }

       où  errno  n'a  plus besoin de la valeur qu'elle avait juste après le retour de somecall()
       (par exemple, elle peut être changée par printf(3)). Si  la  valeur  de  errno  doit  être
       préservée à travers un appel bibliothèque, elle doit être sauvegardée :

           if (somecall() == -1) {
               int errsv = errno;
               printf("somecall() failed\n");
               if (errsv == ...) { ... }
           }

       Notez  que les API de fil d'exécution POSIX ne positionnent pas errno en cas d'erreur mais
       elles renvoient pour résultat le numéro de l'erreur. Ces  numéros  d'erreur  ont  la  même
       signification que les numéros d'erreur indiqués dans errno par d'autres API.

       Sur  d'anciens systèmes, <errno.h> n'est pas présent ou ne déclare pas errno si bien qu'il
       est nécessaire de déclarer errno manuellement (avec extern int errno). Ne faites pas cela.
       Cela  a cessé d'être le cas il y a bien longtemps et cause des problèmes avec les versions
       modernes de la bibliothèque C.

VOIR AUSSI

       errno(1), err(3), error(3), perror(3), strerror(3)

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier   <barbier@debian.org>,   David   Prévot  <david@tilapin.org>  et  Grégoire  Scano
       <gregoire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.