Manpages

NOM

errno − Code de la dernière erreur

SYNOPSIS

#include <errno.h>

DESCRIPTION

Le fichier d’en−tête <errno.h> définit la variable entière errno, qui est renseignée par les appels système et quelques fonctions de bibliothèque pour décrire les conditions d’erreurs. Sa valeur n’est significative que lorsque la valeur de retour 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) ; en cas de réussite une fonction de bibliothèque peut modifier errno.

Les numéros d’erreur corrects sont tous non nuls ; errno n’est mis à zéro par aucun appel système ou 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 fourni 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 le standard 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.

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.

Ci−dessous, une liste des noms d’erreurs symboliques qui sont définis sous Linux. Certains sont marqués avec POSIX.1, cela signifie que POSIX.1−2001 les définit, ceux marqués avec C99, sont définis par C99.

E2BIG

Liste d’arguments trop longue (POSIX.1)

EACCES

Permission refusée (POSIX.1)

EADDRINUSE

Adresse déjà en cours d’utilisation (POSIX.1)

EADDRNOTAVAIL

Adresse non disponible (POSIX.1)

EAFNOSUPPORT

Famille d’adresses non supportée (POSIX.1)

EAGAIN

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

EALREADY

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

EBADE

Échange invalide

EBADF

Mauvais descripteur de fichier (POSIX.1)

EBADFD

Descripteur de fichier dans un mauvais état

EBADMSG

Mauvais message (POSIX.1)

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)

ECANCELED

Opération annulée (POSIX.1)

ECHILD

Pas de processus fils (POSIX.1)

ECHRNG

Numéro de voie hors du domaine de définition

ECOMM

Échec de la communication lors de l’envoi

ECONNABORTED

Connexion abandonnée (POSIX.1)

ECONNREFUSED

Connexion refusée (POSIX.1)

ECONNRESET

Connexion réinitialisée (POSIX.1)

EDEADLK

Blocage d’une ressource évité (POSIX.1)

EDEADLOCK

Synonyme de EDEADLK

EDESTADDRREQ

Adresse de destination nécessaire (POSIX.1)

EDOM

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

EDQUOT

Quota du disque dépassé (POSIX.1)

EEXIST

Fichier existant (POSIX.1)

EFAULT

Mauvaise adresse (POSIX.1)

EFBIG

Fichier trop grand (POSIX.1)

EHOSTDOWN

Hôte éteint

EHOSTUNREACH

Hôte non accessible (POSIX.1)

EIDRM

Identificateur supprimé (POSIX.1)

EILSEQ

Séquence d’octets illégale (POSIX.1, C99)

EINPROGRESS

Opération en cours (POSIX.1)

EINTR

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

EINVAL

Argument invalide (POSIX.1)

EIO

Erreur d’entrée/sortie (POSIX.1)

EISCONN

La socket est connectée (POSIX.1)

EISDIR

Est un répertoire (POSIX.1)

EISNAM

Est un fichier nommé

EKEYEXPIRED

Clé expirée

EKEYREJECTED

La clé a été rejeté 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 arrêté

ELIBACC

Impossible d’accéder à la bibliothèque partagée nécessaire

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

ELOOP

Trop de niveau de liens symboliques rencontrés (POSIX.1)

EMEDIUMTYPE

Mauvais type de médium

EMFILE

Trop de fichiers ouverts (POSIX.1)

EMLINK

Trop de liens symboliques (POSIX.1)

EMSGSIZE

Message trop long (POSIX.1)

EMULTIHOP

Tentative de saut multiple « Multihop » (POSIX.1)

ENAMETOOLONG

Nom de fichier trop long (POSIX.1)

ENETDOWN

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

ENETRESET

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

ENETUNREACH

Réseau inaccessible (POSIX.1)

ENFILE

Trop de fichiers ouverts sur le système (POSIX.1)

ENOBUFS

Plus de tampons disponibles (POSIX.1 (option des FLUX XSI))

ENODATA

Pas de message disponible en tête de la queue de lecture du FLUX (POSIX.1)

ENODEV

Périphérique inexistant (POSIX.1)

ENOENT

Fichier ou répertoire inexistant (POSIX.1)

ENOEXEC

Erreur de format d’exécution (POSIX.1)

ENOKEY

Clé nécessaire non disponible

ENOLCK

Pas de verrou disponible (POSIX.1)

ENOLINK

Un lien a été disjoint (POSIX.1)

ENOMEDIUM

Aucun média trouvé

ENOMEM

Pas assez de mémoire (POSIX.1)

ENOMSG

Pas de message du type attendu (POSIX.1)

ENONET

La machine n’est pas sur le réseau

ENOPKG

Paquet non installé

ENOPROTOOPT

Protocole indisponible (POSIX.1)

ENOSPC

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

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)

ENOTBLK

Périphérique de bloc nécessaire

ENOTCONN

La socket n’est pas connectée (POSIX.1)

ENOTDIR

Pas un répertoire (POSIX.1)

ENOTEMPTY

Répertoire non vide (POSIX.1)

ENOTSOCK

Pas une socket (POSIX.1)

ENOTSUP

Opération non supportée (POSIX.1)

ENOTTY

Opération de contrôle d’entrée/sortie invalide (POSIX.1)

ENOTUNIQ

Le nom sur le réseau n’est pas unique

ENXIO

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

EOPNOTSUPP

Opération non supportée par la socket (POSIX.1)

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

EOVERFLOW

Valeur trop grande pour être sauvé dans ce type de donnée (POSIX.1)

EPERM

Opération interdite (POSIX.1)

EPFNOSUPPORT

Famille de protocole non supportée

EPIPE

Tube cassé (POSIX.1)

EPROTO

Erreur de protocole (POSIX.1)

EPROTONOSUPPORT

Protocole non supporté (POSIX.1)

EPROTOTYPE

Mauvais type de protocole pour la socket (POSIX.1)

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é

EROFS

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

ESHUTDOWN

Impossible d’effectuer l’envoi après l’arrêt du point final du transport

ESPIPE

Recherche invalide (POSIX.1)

ESOCKTNOSUPPORT

Type de socket non supporté

ESRCH

Processus inexistant (POSIX.1)

ESTALE

Vieux descripteur de fichier (POSIX.1)

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

ESTRPIPE

Tube de flux cassé

ETIME

Compteur de temps écoulé (POSIX.1 (option des FLUX XSI))

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

ETIMEDOUT

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

ETXTBSY

Fichier texte occupé (POSIX.1)

EUCLEAN

La structure nécessite un nettoyage

EUNATCH

Protocole indisponible

EUSERS

Trop d’utilisateurs

EWOULDBLOCK

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

EXDEV

Lien inapproprié (POSIX.1)

EXFULL

Échange plein

NOTES

Une erreur fréquente est de faire

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

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 == ...) { ... }
}

C’est commun en C traditionnel de déclarer errno manuellement (par exemple, extern int errno) au lieu d’inclure <errno.h>. Ne faites pas cela. Cela ne fonctionnera pas avec les versions modernes des bibliothèque C. Toutefois, sur de (très) vieux systèmes UNIX, il peut ne pas y avoir de <errno.h> et dans ce cas la déclaration est nécessaire.

VOIR AUSSI

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

COLOPHON

Cette page fait partie de la publication 3.65 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). Florentin Duneau et l’équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <debian−l10n−french [AT] lists.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> ».