Man page - errno(3)

Packages contains this manual

Available languages:

en fr pl ja ru de

Manual

errno

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
errno
NumĂ©ros d’erreur et noms
Liste des noms d’erreur
NOTES
VOIR AUSSI
TRADUCTION

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