errno.h je hlavičkový soubor standardní knihovny programovacího jazyka C [1] , obsahující deklaraci maker pro identifikaci chyb prostřednictvím jejich kódu. Operační systémy kompatibilní s POSIX , jako je Unix a Linux , mohou obsahovat další makra pro detekci chyb prostřednictvím vlastních kódů errno. Hodnota errnomá smysl pouze tehdy, když systémové volání nebo funkce vrátí příznak chyby.
Soubor záhlaví definuje následující makra: EDOM, EILSEQ, ERANGE. Jsou typu int, mají kladnou hodnotu a lze je použít v direktivách preprocesoru#if . Po spuštění programu je hodnota errnonula.
Makro | Dešifrování | sémantický význam |
---|---|---|
EDOM | Chyba dom ain _ | Chyba rozsahu |
EILSEQ | Chyba v sekvenci id _ _ _ _ | Nesprávná sekvence bajtů |
ERANGE | Rozsah chyb _ | Výsledek je příliš velký |
Soubor záhlaví definuje errnojako měnitelnou hodnotu l , která může být makro nebo externě vázaný identifikátor.
V případě chyby se některé funkce knihovny nastaví na errnokladnou hodnotu, ale nikdy ji nenastaví na nulu. Norma neuvádí žádné další chybové kódy. [2]
Chybovou zprávu lze přijmout pomocí funkce zabezpečení proti vláknům strerror_r()( strerror()pro programy s jedním vláknem) nebo vytisknout do chybového proudu pomocí perror().
Standard POSIX definuje následující symbolické názvy chyb [3] :
Makro | Zpráva |
---|---|
E2BIG | Seznam argumentů je příliš dlouhý |
EACCES | Přístup odepřen |
EADDRINUSE | Adresa v provozu |
EADDRNOTAVAIL | Adresa není k dispozici |
EAFNOSUPPORT | Rodina adres není podporována |
ZNOVU | Zdroj dočasně nedostupný |
JIŽ | Připojení již navázáno |
EBADF | Neplatný deskriptor souboru |
EBADMSG | Špatná zpráva |
EBUSY | Zdroj zaneprázdněn |
ZRUŠENO | Operace zrušena |
ECHILD | Žádný dětský proces |
ECONNABORTED | Připojení ukončeno |
ECONRUSED | Spojení odmítnuto |
EDEADLK | Řešení zablokování zdrojů |
EDESTADDRREQ | Je vyžadována cílová adresa |
EDOM | Chyba rozsahu |
EDQUOT | Rezervováno |
EXISTOVAT | soubor existuje |
EFAULT | Špatná adresa |
EFBIG | Soubor je příliš velký |
EHOSTUNREACH | Hostitel není k dispozici |
EIDRM | ID odstraněno |
EILSEQ | Nesprávná sekvence bajtů |
EINPROGRESS | Probíhá operace |
EINTR | Přerušené volání funkce |
EINVAL | Špatný argument |
EIO | Chyba I/O |
EISCONN | Zásuvka (již) připojena |
EISDIR | Toto je katalog |
ELOOP | Příliš mnoho úrovní symbolických odkazů |
EMFILE | Příliš mnoho otevřených souborů |
EMLINK | Příliš mnoho spojení |
EMSGSIZE | Nedefinovaná délka vyrovnávací paměti zpráv |
EMULTIHOP | Rezervováno |
ENAMETOOOLING | Název souboru je příliš dlouhý |
ENETDOWN | Síť nefunguje |
ENETRESET | Spojení přerušeno sítí |
ENETUNREACH | Síť není dostupná |
ENFILE | Příliš mnoho otevřených souborů v systému |
ENOBUFS | Vyrovnávací prostor není k dispozici |
ENODEV | Žádné takové zařízení |
ENOENT | Žádný takový soubor nebo adresář |
ENOEXEC | Chyba formátu spustitelného souboru |
ENOLCK | Zámek není k dispozici |
ENOLINK | Rezervováno |
ENOMEM | Nedostatek paměti |
ENOMSG | Chybí zpráva požadovaného typu |
ENOPROTOOPT | Protokol není k dispozici |
ENOSPC | V zařízení nezbývá žádná paměť |
ENOSYS | Funkce není implementována |
ENOTCONN | zásuvka není připojena |
ENOTDIR | Toto není adresář |
ENOTEMPTY | Adresář není prázdný |
ENOTSOCK | Není to zásuvka |
ENOTSUP | Není podporováno |
ENOTTY | Nedefinovaná operace řízení I/O |
ENXIO | Žádné takové zařízení nebo adresa |
EOPNOTSUPP | operace soketu není podporována |
PŘETEKOVÁNÍ | Příliš velká hodnota pro datový typ |
EPERM | Operace není povolena |
EPIPE | Zničený kanál |
EPROTO | chyba protokolu |
EPROTONOSUPPORT | Protokol není podporován |
EPROTOTYP | Nesprávný typ protokolu pro soket |
ERANGE | Výsledek je příliš velký |
EROFS | Souborový systém pouze pro čtení |
ESPIPE | Špatné umístění |
ESRCH | Žádný takový proces |
ESTALE | Rezervováno |
ETIMEDOUT | Operace zpožděna |
ETXTBSY | Textový soubor je zaneprázdněn |
EWOULDBLOCK | blokovací operace |
EXDEV | Neurčité spojení |