Partager via


errno, _doserrno, _sys_errlist, et _sys_nerr

ces codes d'erreur de blocage de variables globales utilisés par perror et strerror fonctionne pour imprimer des messages d'erreur.Les plus les versions fonctionnelles sécurisées répertoriées dans ce tableau doivent être utilisés à la place de leur variable globale.

variable globale

équivalents fonctionnels

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_errno

Ces variables sont déclarées dans STDLIB.H comme

extern int _doserrno; 
extern int errno; 
extern char *_sys_errlist[ ];
extern int _sys_nerr;

Notes

errno et _errno sont connectés à la même variable.errno est défini avec le code #define errno (*_errno())

errno est défini sur une erreur dans un appel au niveau de le système.Étant donné qu' errno contient la valeur pour le dernier appel qui la définit, cette valeur peut être modifiée en successif des appels.Toujours contrôle errno immédiatement avant et après un appel qui peut le définir.

Sur une erreur, errno n'est pas nécessairement pour valeur la même valeur que le code d'erreur est retournée par un appel système.Pour les opérations d'E/S, utilisez _doserrno d'accéder aux équivalents du système d'exploitation du code d'erreur de codes d' errno .Pour la plupart des opérations de non-I/O la valeur d' _doserrno est pas définie.

Chaque valeur d' errno est associée à un message d'erreur qui peut être imprimé à l'aide de perror soit enregistré dans une chaîne à l'aide de strerror.perror et strerror utilisent la matrice d' _sys_errlist et _sys_nerr, le nombre d'éléments dans _sys_errlist, pour gérer les informations sur l'erreur.

Les routines mathématiques de bibliothèque définissent errno en appelant _matherr.Pour gérer les erreurs mathématiques différemment, écrivez votre propre routine conformément à la description de référence d' _matherr et nommez _matherr.

toutes les valeurs d' errno , définies en tant que constantes prédéfinies dans ERRNO.H, sont UNIX-compatibles et sont répertoriées ci-dessous.Uniquement ERANGE, EILSEQ et EDOM sont spécifiés dans la norme ANSI.

Constante

message d'erreur système

Valeur

EPERM

Opération non - autorisée

1

ENOENT

Aucun fichier ou répertoire

2

ESRCH

Aucun ces processus

3

EINTR

fonction interrompue

4

EIO

erreur d'E/S

5

ENXIO

Aucun périphérique ou adresse

6

E2BIG

Liste d'arguments trop long

7

ENOEXEC

Erreur de format d'exec

8

EBADF

Numéro de fichier incorrect

9

ECHILD

aucun processus engendrés

10

EAGAIN

Pas plus de processus ou pas assez de niveau d'imbrication de mémoire ou de la valeur maximale atteints

11

ENOMEM

pas assez de mémoire

12

EACCES

autorisation refusée

13

EFAULT

Adresse incorrecte

14

EBUSY

périphérique ou ressource occupée

16

EEXIST

le fichier existe

17

EXDEV

Lien sur un autre appareil

18

ENODEV

Aucun périphérique

19

ENOTDIR

Pas de répertoire

20

EISDIR

est un répertoire

21

EINVAL

Argument non valide

22

ENFILE

Trop de fichiers ouverts dans le système

23

EMFILE

trop de fichiers ouverts

24

ENOTTY

Fonctionnement du contrôle d'E/S incorrecte

25

EFBIG

fichier trop grand

27

ENOSPC

aucun espace laissé sur le périphérique

28

ESPIPE

Accès non valide

29

EROFS

Système de fichiers en lecture seule

30

EMLINK

trop de liens

31

EPIPE

canal rompu

32

EDOM

Argument de mathématiques

33

ERANGE

résultat trop grand

34

EDEADLK

l'interblocage de ressource se produirait

36

EDEADLOCK

De la même manière qu'EDEADLK pour compatibilité avec les versions antérieures de Microsoft C

36

ENAMETOOLONG

Nom de fichier trop long

38

ENOLCK

aucun verrous disponibles

39

ENOSYS

fonction non prise en charge

40

ENOTEMPTY

répertoire non vide

41

EILSEQ

Séquence d'octets non conforme

42

STRUNCATE

La chaîne a été tronqué

80

Voir aussi

Référence

Variables globales

constantes d'errno

perror

strerror

_get_doserrno

_set_doserrno

_get_errno

_set_errno