Sdílet prostřednictvím


errno, _doserrno, _sys_errlist, and _sys_nerr

Globální makra, které obsahují kódy chyb, které jsou nastaveny při spuštění programu a řetězec ekvivalenty kódů chyb pro zobrazení.

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

Poznámky

Proměnné errno a _doserrno jsou modulem runtime při spuštění programu nastaveny na 0.Proměnná errno je nastavena na chybu při volání na úrovni systému.Vzhledem k tomu, že proměnná errno nese hodnotu posledního volání, které ji nastavilo, může být její hodnota změněna následným voláním.Volání knihovny runtime, které nastavilo proměnnou errno na chybu, v případě úspěchu nesmaže hodnotu proměnné errno.Vždy vymazat errno voláním _set_errno(0) bezprostředně před volání, které mohou nastavení a zkontroluje, ihned po volání.

V případě chyby není proměnná errno nutně nastavena na stejnou hodnotu jako chybový kód vrácený voláním systému.Pro vstupně-výstupních operací _doserrno ukládá ekvivalenty kódů chyb operačního systému errno kódy.U většiny bez I/O operací, hodnota _doserrno není nastaven.

Každý errno hodnota je spojen s chybovou zprávou v _sys_errlist , lze vytisknout pomocí jednoho z perror funkce nebo uložené v řetězci pomocí jednoho z strerror nebo strerror_s funkce.perror a strerror funkce použití _sys_errlist pole a _sys_nerr– počet prvků v _sys_errlist– ke zpracování informací o chybách.Přímý přístup k _sys_errlist a _sys_nerr je zastaralý z důvodů zabezpečení kódu.Doporučujeme používat bezpečnější, funkční verze namísto globální makra, jak je znázorněno zde:

Globální makra

Funkční ekvivalenty

_doserrno

_get_doserrno,_set_doserrno

errno

_get_errno, _set_errno

_sys_errlist, _sys_nerr

strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Knihovna matematických rutin nastavuje proměnnou errno voláním funkce _matherr.Chcete-li matematické chyby ošetřit jinak, napište si vlastní rutinu podle popisu v materiálech k funkci _matherr a pojmenujte ji _matherr.

Všechny errno hodnot v následující tabulce jsou předdefinované konstanty v < errno.h > a jsou kompatibilní se systémem UNIX.Ve standardu ISO C99 jsou specifikovány pouze hodnoty ERANGE, EILSEQ a EDOM.

Konstanta

Zpráva o systémové chybě

Hodnota

EPERM

Operace není povolena.

1

ENOENT

Žádný odpovídající soubor nebo adresář

2

ESRCH

Žádný odpovídající proces

3

EINTR

Funkce byla přerušena.

4

EIO

Vstupně-výstupní chyba

5

ENXIO

Žádné odpovídající 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é vytvářené procesy

10

EAGAIN

Žádné další procesy nebo není dostatek paměti nebo bylo dosaženo maximální úrovně 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é odpovídající zařízení

19

ENOTDIR

Nejedná se o adresář.

20

EISDIR

Jedná se o adresář.

21

EINVAL

Argument je neplatný.

22

ENFILE

V systému je otevřeno příliš mnoho souborů.

23

EMFILE

Bylo otevřeno příliš mnoho souborů.

24

ENOTTY

Nesprávná operace vstupně-výstupní kontroly

25

EFBIG

Soubor je příliš velký.

27

ENOSPC

V zařízení není dostatek místa.

28

ESPIPE

Neplatné hledání

29

EROFS

Systém souborů je určen jen pro čtení.

30

EMLINK

Příliš mnoho odkazů

31

EPIPE

Kanál je přerušen.

32

EDOM

Matematický argument

33

ERANGE

Výsledek je příliš velký.

34

EDEADLK

Došlo by k vzájemnému zablokování prostředků.

36

EDEADLOCK

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

36

ENAMETOOLONG

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

38

ENOLCK

K dispozici nejsou žádné zámky.

39

ENOSYS

Tato funkce není podporována.

40

ENOTEMPTY

Adresář není prázdný.

41

EILSEQ

Neplatná sekvence bajtů

42

STRUNCATE

Řetězec byl zkrácen.

80

Požadavky

Globální makra

Požadovaný hlavičkový soubor

Volitelné záhlaví

errno

< errno.h > nebo < stdlib.h >, < cerrno > nebo < cstdlib > (C++)

_doserrno, _sys_errlist, _sys_nerr

< stdlib.h >, < cstdlib > (C++)

< errno.h >, < cerrno > (C++)

_doserrno, _sys_errlist, A _sys_nerr makra jsou rozšíření od společnosti Microsoft.Další informace o kompatibilitě naleznete v tématu Kompatibilita.

Viz také

Referenční dokumentace

Globální proměnné

errno – konstanty

perror, _wperror

strerror, _strerror, _wcserror, __wcserror

strerror_s, _strerror_s, _wcserror_s, __wcserror_s

_get_doserrno

_set_doserrno

_get_errno

_set_errno