errno, _doserrno, _sys_errlist et _sys_nerr

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Macros globales qui contiennent des codes d'erreur définis pendant l'exécution du programme et équivalents chaîne des codes d'erreur pour l'affichage.

#define errno   (*_errno()) #define _doserrno   (*__doserrno()) #define _sys_errlist (__sys_errlist()) #define _sys_nerr (*__sys_nerr())  

Les éléments errno et _doserrno sont définis à 0 par l'exécution lors du démarrage du programme. L'élément errno est déclenché en cas d'erreur lors d'un appel au niveau système. Comme errno contient la valeur du dernier appel qui le définit, cette valeur peut être modifiée par les appels suivants. Les appels de la bibliothèque Runtime qui déclenchent errno en cas d'erreur ne suppriment pas errno en cas de réussite. Supprimez toujours errno en appelant _set_errno(0) juste avant un appel qui peut le déclencher, puis vérifiez-le immédiatement après celui-ci.

En cas d'erreur, l'élément errno n'est pas nécessairement défini à la même valeur que le code d'erreur retourné par un appel système. En ce qui concerne les opérations d'E/S, _doserrno stocke les équivalents en codes d'erreur des codes errno du système d'exploitation. Pour la plupart des opérations autres que d'E/S, la valeur _doserrno n'est pas définie.

Chaque valeur errno est associée à un message d'erreur dans _sys_errlist qui peut être imprimé en utilisant l'une des fonctions perror, ou stocké dans une chaîne à l'aide de l'une des fonctions strerror ou strerror_s. Les fonctions perror et strerror utilisent le tableau _sys_errlist et _sys_nerr, le nombre d'éléments dans _sys_errlist, pour traiter les informations relatives aux erreurs. Un accès direct à _sys_errlist et _sys_nerr est déconseillé pour des raisons de sécurité du code. Nous vous recommandons d'utiliser les versions fonctionnelles plus sécurisées, au lieu des macros globales, comme indiqué ici :

Macro globaleÉquivalents fonctionnels
_doserrno_get_doserrno, _set_doserrno
errno_get_errno, _set_errno
_sys_errlist, _sys_nerrstrerror_s, _strerror_s, _wcserror_s, __wcserror_s

Les routines mathématiques des bibliothèques définissent errno en appelant _matherr. Pour gérer des erreurs mathématiques différemment, écrivez votre propre routine selon la description de la référence _matherr, puis appelez-la _matherr.

Toutes les valeurs errno du tableau suivant sont des constantes prédéfinies dans <errno.h> et compatibles avec UNIX. Seuls ERANGE, EILSEQ, et EDOM sont spécifiés dans la norme ISO C99.

ConstanteMessage d'erreur systèmeValeur
EPERMOpération non autorisée1
ENOENTAucun fichier ou répertoire de ce type2
ESRCHAucun de ces processus3
EINTRFonction interrompue4
EIOErreur d'E/S5
ENXIOAucun périphérique ou adresse de ce type6
E2BIGListe d'arguments trop longue7
ENOEXECErreur de format exec8
EBADFNuméro de fichier erroné9
ECHILDAucun processus généré10
EAGAINPlus de processus disponibles ou mémoire insuffisante ou niveau maximal d'imbrication atteint11
ENOMEMMémoire insuffisante12
EACCESAutorisation refusée13
EFAULTAdresse incorrecte14
EBUSYPériphérique ou ressource occupé16
EEXISTLe fichier existe17
EXDEVLien multi-périphériques18
ENODEVAucun périphérique de ce type19
ENOTDIRPas un répertoire20
EISDIREst un répertoire21
EINVALArgument non valide22
ENFILETrop de fichiers ouverts dans le système23
EMFILETrop de fichiers ouverts24
ENOTTYOpération de contrôle d'E/S incorrecte25
EFBIGFichier trop grand27
ENOSPCAucun espace libre sur le périphérique28
ESPIPERecherche non valide29
EROFSSystème de fichiers en lecture seule30
EMLINKTrop de liens31
EPIPECanal rompu32
EDOMArgument mathématique33
ERANGERésultat trop volumineux34
EDEADLKUn blocage des ressources se produirait36
EDEADLOCKIdentique à EDEADLK pour assurer la compatibilité avec les versions antérieures de Microsoft C36
ENAMETOOLONGNom de fichier trop long38
ENOLCKPas de verrous disponibles39
ENOSYSFonction non prise en charge40
ENOTEMPTYRépertoire non vide41
EILSEQSéquence d'octets non conforme42
STRUNCATELa chaîne a été tronquée80
Macro globaleEn-tête requisEn-tête facultatif
errno<errno.h> ou <stdlib.h>, <cerrno> ou <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr<stdlib.h>, <cstdlib> (C++)<errno.h>, <cerrno> (C++)

Les macros _doserrno, _sys_errlist et _sys_nerr sont des extensions Microsoft. Pour plus d'informations sur la compatibilité, voir Compatibilité.

Variables globales
errno, constantes
perror, _wperror
strerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno

Afficher: