Errno.h - Errno.h
C standardní knihovna |
---|
Obecná témata |
Různé záhlaví |
errno.h je hlavičkový soubor v standardní knihovna z Programovací jazyk C.. Definuje makra pro hlášení a načítání chybových stavů pomocí symbolu errno
(zkratka pro „číslo chyby“).[1]
errno
funguje jako celočíselná proměnná. Hodnota (číslo chyby) je uložena v errno
jistě funkce knihovny když zjistí chyby. Při spuštění programu je uložená hodnota nula. Funkce knihovny ukládají pouze hodnoty větší než nula. Libovolná funkce knihovny může změnit hodnotu uloženou před návratem, bez ohledu na to, zda detekuje chyby.[2] Většina funkcí obvykle označuje, že zjistili chybu vrácením speciální hodnoty NULA pro funkce, které se vracejí ukazatele a -1 pro funkce, které vracejí celá čísla. Několik funkcí vyžaduje předvolbu volajícího errno
na nulu a poté to otestujte, abyste zjistili, zda byla zjištěna chyba.
The errno
makro se rozšíří na lhodnota s typem int
, někdy s externí
a / nebo nestálý
specifikátory typu v závislosti na platformě.[3] Původně to bylo umístění statické paměti, ale makra se dnes téměř vždy používají vícevláknové, takže každé vlákno uvidí své vlastní místní vlákno číslo chyby.
Soubor záhlaví také definuje makra, která se rozšiřují na celočíselné konstanty, které představují chybové kódy. The C standardní knihovna vyžaduje definování pouze tří:[2]
EDOM
- Výsledky z parametru mimo doménu funkce, např.
sqrt (-1)
PORUCHA
- Výsledky z výsledku mimo rozsah funkce, např.
strtol ("0xfffffffff", NULL, 0)
na systémech s šířkou 32 bitůdlouho
EILSEQ (Požadováno od roku 1994, změna 1 k normě C89)[4]
- Výsledky z nelegální sekvence bajtů, např.
mbstowcs (buf, " xff", 1)
na systémech, které používají UTF-8.
POSIX v souladu operační systémy jako AIX, Linux nebo Solaris obsahují mnoho dalších chybových hodnot, z nichž mnohé se používají mnohem častěji než výše uvedené hodnoty, například EACCES když nelze otevřít soubor pro čtení.[5] C ++ 11 dále definuje mnoho stejných hodnot nalezených ve specifikaci POSIX.[6]
Tradičně první stránka Příručky k systému Unix, pojmenovaný intro (2), vypíše všechna makra errno.h, ale to není případ Linux, kde jsou tato makra místo toho uvedena v errno (3).[7]
An errno
lze přeložit do popisného řetězce pomocí strerror (definováno v řetězec.h ) nebo volaná přípona BSD sys_errlist
. Překlad lze vytisknout přímo do standardní proud chyb použitím hrůza (definováno v stdio.h ). Tak jako strerror
v mnoha unixových systémech není bezpečná pro vlákna, bezpečná pro vlákna strerror_r
je používán, ale konfliktní definice z POSIX a GNU jej činí ještě méně přenosným než sys_errlist
stůl.[8]
Viz také
Reference
- ^ Mezinárodní standard pro programovací jazyk C (C11), ISO / IEC 9899: 2011, s. 205
- ^ A b Mezinárodní standard pro programovací jazyk C (C99), ISO / IEC 9899: 1999, s. 186
- ^ „Kontrola chyb“. Knihovna GNU C (glibc). Projekt GNU. 8. 2. 2014. Citováno 2014-06-25.
- ^ „Stručný popis normativního dodatku 1“. Citováno 2013-09-12.
- ^ Specifikace Single UNIX, Vydání 7 od Otevřená skupina : čísla systémových chyb - Referenční příručka základních definic,
- ^ „Čísla chyb - cppreference.com“. Citováno 2015-05-08.
- ^ Stevens & Rago 2013, str. 14.
- ^ McCabe, Colin. "Problém se strerror". www.club.cc.cmu.edu.
Bibliografie
- Stevens, W. Richard; Rago, Stephen A. (24. května 2013). Pokročilé programování v prostředí UNIX (Třetí vydání.). Addison-Wesley Professional. ISBN 978-0321637734. Citováno 27. února 2015.
externí odkazy
- FreeBSD Systémová volání Manuál –
- Linux Programátor Manuál - Funkce knihovny –
- Příručka knihovny GNU C: Kódy chyb
- Seznamy chybných hodnot v systému Linux, číselných i symbolických