Sdílet prostřednictvím


Kód chyby, _doserrno, _sys_errlist a _sys_nerr

Tyto globální proměnné podržte chybové kódy používané perror a strerror funkce pro tisk chybové zprávy.Bezpečnější funkční verze uvedené v této tabulce by měly použít namísto jejich globální proměnné.

Globální proměnná

Funkčními ekvivalenty

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_errno

Tyto proměnné jsou deklarovány v STDLIB.H jako

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

Poznámky

errnoa _errno jsou připojeny ke stejné proměnné.errnoje definován s kódem#define errno (*_errno())

errnoje nastavena na chyby při volání na úrovni systému.Protože errno má hodnotu posledního volání, které je tato hodnota změněná následných volání.Vždy zkontrolujte errno bezprostředně před a po volání, které může nastavit.

Na chybu errno není nutně nastavena na stejnou hodnotu jako kód chyby vrácený voláním systému.Operací, pomocí _doserrno přístup ekvivalenty kód chyby operačního systému errno kódy.U většiny operací, non-I/O hodnotu _doserrno nedefinovaná.

Každý errno hodnota je spojen s chybovou zprávu můžete vytisknout pomocí perror nebo uložené v řetězci pomocí strerror.perrora strerror použít _sys_errlist pole a _sys_nerr, počet prvků v _sys_errlist, zpracovat informace o chybě.

Sada rutin matematické knihovny errno voláním _matherr.Chcete-li jiným způsobem zpracování chyb matematické, napsat vlastní rutina podle _matherr referenční popis a název _matherr.

Všechny errno hodnoty, definované jako konstanty předdefinované v kód chyby.H, jsou kompatibilní se systémem UNIX a jsou uvedeny níže.Pouze ERANGE, EILSEQ a EDOM jsou uvedeny ve standardu ANSI.

Konstanta

Chybová zpráva systému

Value

EPERM

Operace není povolena.

1

ENOENT

Tento soubor nebo adresář

2

ESRCH

Takový proces neexistuje

3

EINTR

Přerušení funkce

4

EIO

Chyba I/O

5

ENXIO

Takové zařízení ani adresa

6

E2BIG

Seznam argumentů je příliš dlouhý.

7

ENOEXEC

Chyba formátu exec

8

EBADF

Chybné číslo souboru

9

ECHILD

Žádné procesy vytvářený

10

EAGAIN

Žádné další procesy nebo není dostatek paměti nebo maximální úroveň vnoření

11

ENOMEM

Není dostatek paměti.

12

EACCES

Oprávnění byla odepřena

13

EFAULT

Chybná adresa

14

EBUSY

Zařízení nebo prostředek je zaneprázdněn

16

EEXIST

Soubor existuje

17

EXDEV

Odkaz mezi zařízeními

18

ENODEV

Žádné takové zařízení

19

ENOTDIR

Není adresář

20

EISDIR

Adresář

21

EINVAL

Neplatný argument

22

ENFILE

Příliš mnoho souborů, otevřete v systému

23

EMFILE

Příliš mnoho otevřených souborů

24

ENOTTY

Nevhodnou operací řízení I/O

25

EFBIG

Soubor je příliš velký

27

ENOSPC

Žádné volného místa v zařízení

28

ESPIPE

Neplatný seek

29

EROFS

Systém souborů pouze pro čtení

30

EMLINK

Příliš mnoho odkazů

31

EPIPE

Přerušený kanál

32

EDOM

Matematický argument

33

ERANGE

Výsledek je příliš velký

34

EDEADLK

Došlo by k zablokování prostředků

36

EDEADLOCK

Stejné jako EDEADLK pro kompatibilitu se staršími verzemi Microsoft C

36

ENAMETOOLONG

Název souboru je příliš dlouhý.

38

ENOLCK

Žádné zámky, které jsou k dispozici

39

ENOSYS

Funkce není podporována.

40

ENOTEMPTY

Adresář není prázdný.

41

EILSEQ

Neplatný bajt sekvence

42

STRUNCATE

Řetězec byl zkrácen.

80

Viz také

Referenční dokumentace

Globální proměnné

Kód chyby konstanty

perror

strerror

_get_doserrno

_set_doserrno

_get_errno

_set_errno