Errno.h

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.

Makra a typy

#include <errno.h> #define EDOM #define EILSEQ #define ERANGE extern int errno ;

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]

POSIX

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í

Odkazy

Poznámky

  1. ISO IEC 9899 1999 - C99, §7.5
  2. ISO/IEC 9899:1999 . Získáno 30. července 2011. Archivováno z originálu 22. srpna 2011.
  3. Systémový průvodce pro použití errno.h . Datum přístupu: 17. ledna 2012. Archivováno z originálu 4. března 2016.