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 |
|
errno |
|
_sys_errlist, _sys_nerr |
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
strerror, _strerror, _wcserror, __wcserror