dwww Home | Manual pages | Find package

errno(3)                   Library Functions Manual                   errno(3)

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  bi-
       bliothè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 bi-
       bliothè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éus-
       site. 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  er-
       reur 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  fi-
       chier  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 archi-
       tectures  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 cor-
       respondant 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 ver-
              sions 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  architec-
                       tures.  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  incom-
                       plet (POSIX.1, C99).

                       Le texte montré ici correspond à la description des er-
                       reurs de la glibc ; cette erreur est décrite  dans  PO-
                       SIX.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 si-
                       gnal(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  re-
                       quise.

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

       ELIBMAX         Tentative  de liaison avec trop de bibliothèques parta-
                       gées.

       ELIBSCN         Section .lib dans a.out corrompue

       ELIBEXEC        Impossible d'exécuter directement une bibliothèque par-
                       tagé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 »  (PO-
                       SIX.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   (PO-
                       SIX.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  (PO-
                       SIX.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 (PO-
                       SIX.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  (PO-
                       SIX.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 fi-
                       chiers 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 re-
       tour 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 biblio-
       thè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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot <david@tilapin.org>  et  Grégoire  Scano  <gre-
       goire.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⟩.

Pages du manuel de Linux 6.03   4 décembre 2022                       errno(3)

Generated by dwww version 1.15 on Sat Jun 29 01:51:00 CEST 2024.