Linux

CentOS 5.3

errno(3)


ERRNO

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èmes (et quelques fonctions de bibliothèque) pour expliquer les conditions d’erreurs. Sa valeur n’est significative que lorsque l’appel système a échoué (généralement en renvoyant −1), car même en cas de réussite une fonction de bibliothèque peut modifier errno.

Parfois, si −1 est une valeur de retour légale, il faut positionner errno à 0 avant d’effectuer l’appel système, de manière à détecter une erreur éventuelle. C’est le cas par exemple de getpriority(2).

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.

Les codes d’erreurs valides sont tous non-nuls. errno n’est jamais mis à zéro par une fonction de la bibliothèque. Toutes les erreurs détaillées dans POSIX.1 doivent avoir des valeurs différentes, à l’exception de EAGAIN et EWOULDBLOCK, qui peuvent être les mêmes

Ci-desous une liste des noms symboliques d’erreur qui sont définis sous Linux. Certains sont marqués POSIX.1 indiquant que le nom est défini par POSIX.1-2001, ou C99, indiquant que le nom est défini 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 en mauvais état.

EBADMSG

Mauvais message (POSIX.1).

EBADR

Descripteur de requête invalide.

EBADRQC

Code de requête invalide.

EBADSLT

Emplacement (Ndt : slot) invalide.

EBUSY

Ressource ou périphérique occupé (POSIX.1).

ECANCELED

Opération annulée (POSIX.1).

ECHILD

Pas de processus fils (POSIX.1).

ECHRNG

Numéro de canal hors d’intervalle.

ECOMM

Erreur de communication à 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 fonction (POSIX.1, C99).

EDQUOT

+. Quota 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 de ressource 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).

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 de type nommé.

EKEYEXPIRED

La clé a expiré.

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 arrêté.

ELIBACC

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

ELIBBAD

Accession à une bibliothèque partagée corrompue.

ELIBMAX

Tentative de lier dans 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 liens symboliques rencontrés (POSIX.1).

EMEDIUMTYPE

Mauvais type de medium.

EMFILE

Trop de fichiers ouverts (POSIX.1).

EMLINK

Trop de liens symboliques (POSIX.1).

EMSGSIZE

Longueur du tampon de message inappropriée (POSIX.1).

EMULTIHOP

Multihop tenté (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 (XSI STREAMS option)).

ENODATA

Pas de message disponible dans la file STREAM (POSIX.1).

ENODEV

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

ENOENT

Fichier ou répertoire inexistant (POSIX.1).

ENOEXEC

Exécution impossible (POSIX.1).

ENOKEY

La clé requise n’est pas disponible.

ENOLCK

Pas de verrou disponible (POSIX.1).

ENOLINK

Le lien a été coupé (POSIX.1).

ENOMEDIUM

Aucun medium 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

Le paquet n’est pas installé.

ENOTPROTOOPT

Protocole indisponible (POSIX.1).

ENOSPC

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

ENOSR

Pas de ressource STREAM (POSIX.1 (option STREAMS XSI)).

ENOSTR

Pas un STREAM (POSIX.1 (option STREAMS XSI)).

ENOSYS

Fonction non implémentée (POSIX.1).

ENOTBLK

Périphérique de bloc requis.

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 comformément à POSIX.1 ces valeurs d’erreurs doivent être distinctes.)

EOVERFLOW

Valeur trop grande pour le type de donnée (POSIX.1).

EPERM

Opération interdite (POSIX.1).

EPFNOSUPPORT

Famille de protocole non supportée.

EPIPE

Tube sans lecteur (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

L’adresse distante a changé.

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’envoyer après la désactivation du point limite du transport.

ESPIPE

Recherche invalide (POSIX.1).

ESOCKTNOSUPPORT

Type de socket non supporté.

ESRCH

Processus inexistant.

ESTALE

Descripteur de fichier éventé (POSIX.1))

Cette erreur peut survenir pour NFS et d’autres systèmes de fichiers;

ESTRPIPE

Erreur de tube flux.

ETIME

Temporisation expirée (POSIX.1 (XSI STREAMS option))

(POSIX.1 dit « Dépassement du délai ioctl() STREAM ».

ETIMEDOUT

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

ETXTBSY

Fichier texte occupé.

EUCLEAN

La structure a besion d’être nettoyée.

EUNATCH

Le pilote de protocole n’est pas attaché.

EUSERS

Trop d’utilisateurs.

EWOULDBLOCK

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

EXDEV

Lien inapproprié (POSIX.1).

EXFULL

Ãchange complet.

NOTES

Une erreur fréquente est de faire

if (unappel() == −1) {
    printf("unappel() a échoué\n");
    if (errno == ...) { ... }
}

où errno n’a plus la valeur qu’elle avait juste après le retour de unappel() (c’est-à -dire qu’elle peut avoir été modifiée par printf()). Si la valeur de errno doit être préservée à travers un appel bibliothèque, elle doit être sauvegardée :

if (unappel() == -1) {
    int errsv = errno;
    printf("unappel() a échoué\n");
    if (errsv == ...) { ... }
}

Il est classique, dans le C traditionnel, de déclarer errno manuellement (c’est-à -dire, extern int errno) au lieu d’inclure <errno.h>. Ne faites pas ceci. Cela ne fonctionnera pas avec les versions récentes de la bibliothèque C. Toutefois, sur de (très) vieux systèmes UNIX, <errno.h> peut ne pas exister auquel cas la déclaration est nécessaire

VOIR AUSSI

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

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 23 octobre 1996 et révisée le 14 août 2006.

L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 errno ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


errno(3)