errno, _doserrno, _sys_errlist et _sys_nerrerrno, _doserrno, _sys_errlist, and _sys_nerr

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.Global macros that hold error codes that are set during program execution, and string equivalents of the error codes for display.

SyntaxeSyntax

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

NotesRemarks

Les éléments errno et _doserrno sont définis à 0 par l'exécution lors du démarrage du programme.Both errno and _doserrno are set to 0 by the runtime during program startup. L'élément errno est déclenché en cas d'erreur lors d'un appel au niveau système.errno is set on an error in a system-level call. Comme errno contient la valeur du dernier appel qui le définit, cette valeur peut être modifiée par les appels suivants.Because errno holds the value for the last call that set it, this value may be changed by succeeding calls. Les appels de la bibliothèque Runtime qui déclenchent errno en cas d'erreur ne suppriment pas errno en cas de réussite.Run-time library calls that set errno on an error do not clear errno on success. 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.Always clear errno by calling _set_errno(0) immediately before a call that may set it, and check it immediately after the call.

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.On an error, errno is not necessarily set to the same value as the error code returned by a system call. 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.For I/O operations, _doserrno stores the operating-system error-code equivalents of errno codes. Pour la plupart des opérations autres que d'E/S, la valeur _doserrno n'est pas définie.For most non-I/O operations, the value of _doserrno is not set.

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.Each errno value is associated with an error message in _sys_errlist that can be printed by using one of the perror functions, or stored in a string by using one of the strerror or strerror_s functions. 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.The perror and strerror functions use the _sys_errlist array and _sys_nerr—the number of elements in _sys_errlist—to process error information. Un accès direct à _sys_errlist et _sys_nerr est déconseillé pour des raisons de sécurité du code.Direct access to _sys_errlist and _sys_nerr is deprecated for code-security reasons. Nous vous recommandons d'utiliser les versions fonctionnelles plus sécurisées, au lieu des macros globales, comme indiqué ici :We recommend that you use the more secure, functional versions instead of the global macros, as shown here:

Macro globaleGlobal Macro Équivalents fonctionnelsFunctional Equivalents
_doserrno _get_doserrno, _set_doserrno_get_doserrno, _set_doserrno
errno _get_errno, _set_errno_get_errno, _set_errno
_sys_errlist, _sys_nerr_sys_errlist, _sys_nerr strerror_s, _strerror_s, _wcserror_s, __wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s

Les routines mathématiques des bibliothèques définissent errno en appelant _matherr.Library math routines set errno by calling _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.To handle math errors differently, write your own routine according to the _matherr reference description and name it _matherr.

Toutes les valeurs errno du tableau suivant sont des constantes prédéfinies dans <errno.h> et compatibles avec UNIX.All errno values in the following table are predefined constants in <errno.h>, and are UNIX-compatible. Seuls ERANGE, EILSEQ, et EDOM sont spécifiés dans la norme ISO C99.Only ERANGE, EILSEQ, and EDOM are specified in the ISO C99 standard.

ConstanteConstant Message d'erreur systèmeSystem error message ValeurValue
EPERM Opération non autoriséeOperation not permitted 11
ENOENT Aucun fichier ou répertoire de ce typeNo such file or directory 22
ESRCH Aucun de ces processusNo such process 33
EINTR Fonction interrompueInterrupted function 44
EIO Erreur d'E/SI/O error 5.5
ENXIO Aucun périphérique ou adresse de ce typeNo such device or address 6.6
E2BIG Liste d'arguments trop longueArgument list too long 77
ENOEXEC Erreur de format execExec format error 88
EBADF Numéro de fichier erronéBad file number 99
ECHILD Aucun processus généréNo spawned processes 1010
EAGAIN Plus de processus disponibles ou mémoire insuffisante ou niveau maximal d'imbrication atteintNo more processes or not enough memory or maximum nesting level reached 1111
ENOMEM Mémoire insuffisanteNot enough memory 1212
EACCES Autorisation refuséePermission denied 1313
EFAULT Adresse incorrecteBad address 1414
EBUSY Périphérique ou ressource occupéDevice or resource busy 1616
EEXIST Le fichier existeFile exists 1717
EXDEV Lien multi-périphériquesCross-device link 1818
ENODEV Aucun périphérique de ce typeNo such device 1919
ENOTDIR Pas un répertoireNot a directory 2020
EISDIR Est un répertoireIs a directory 2121
EINVAL Argument non valideInvalid argument 2222
ENFILE Trop de fichiers ouverts dans le systèmeToo many files open in system 2323
EMFILE Trop de fichiers ouvertsToo many open files 2424
ENOTTY Opération de contrôle d'E/S incorrecteInappropriate I/O control operation 2525
EFBIG Fichier trop grandFile too large 2727
ENOSPC Aucun espace libre sur le périphériqueNo space left on device 2828
ESPIPE Recherche non valideInvalid seek 2929
EROFS Système de fichiers en lecture seuleRead-only file system 3030
EMLINK Trop de liensToo many links 3131
EPIPE Canal rompuBroken pipe 3232
EDOM Argument mathématiqueMath argument 3333
ERANGE Résultat trop volumineuxResult too large 3434
EDEADLK Un blocage des ressources se produiraitResource deadlock would occur 3636
EDEADLOCK Identique à EDEADLK pour assurer la compatibilité avec les versions antérieures de Microsoft CSame as EDEADLK for compatibility with older Microsoft C versions 3636
ENAMETOOLONG Nom de fichier trop longFilename too long 3838
ENOLCK Pas de verrous disponiblesNo locks available 3939
ENOSYS Fonction non prise en chargeFunction not supported 4040
ENOTEMPTY Répertoire non videDirectory not empty 4141
EILSEQ Séquence d'octets non conformeIllegal byte sequence 4242
STRUNCATE La chaîne a été tronquéeString was truncated 8080

Configuration requiseRequirements

Macro globaleGlobal macro En-tête requisRequired header En-tête facultatifOptional header
errno <errno.h> ou <stdlib.h>, <cerrno> ou <cstdlib> (C++)<errno.h> or <stdlib.h>, <cerrno> or <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr_doserrno, _sys_errlist, _sys_nerr <stdlib.h>, <cstdlib> (C++)<stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)<errno.h>, <cerrno> (C++)

Les macros _doserrno, _sys_errlist et _sys_nerr sont des extensions Microsoft.The _doserrno, _sys_errlist, and _sys_nerr macros are Microsoft extensions. Pour plus d'informations sur la compatibilité, voir Compatibilité.For more compatibility information, see Compatibility.

Voir aussiSee also

Variables globalesGlobal Variables
errno, constanteserrno Constants
perror, _wperrorperror, _wperror
strerror, _strerror, _wcserror, __wcserrorstrerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s, __wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno_get_doserrno
_set_doserrno_set_doserrno
_get_errno_get_errno
_set_errno_set_errno