errno.h
C standardbibliotek (libc) |
---|
Allmänna ämnen |
Diverse rubriker |
errno.h är en rubrikfil i standardbiblioteket för programmeringsspråket C. Den definierar makron för rapportering och hämtning av feltillstånd med hjälp av symbolen errno
(förkortning av "felnummer").
errno
fungerar som en heltalsvariabel. Ett värde (felnumret) lagras i errno
av vissa biblioteksfunktioner när de upptäcker fel. Vid programstart är det lagrade värdet noll. Biblioteksfunktioner lagrar endast värden större än noll. Alla biblioteksfunktioner kan ändra värdet som lagrats före retur, oavsett om de upptäcker fel eller inte. De flesta funktioner indikerar att de upptäckt ett fel genom att returnera ett speciellt värde, vanligtvis NULL för funktioner som returnerar pekare och -1 för funktioner som returnerar heltal. Några funktioner kräver att den som ringer förinställer errno
till noll och testar det efteråt för att se om ett fel upptäckts.
Errno -
makrot expanderar till ett lvärde med typen int
, ibland med externa
och/eller flyktiga
typspecifikationer beroende på plattformen. Ursprungligen var detta en statisk minnesplats, men makron används nästan alltid idag för att möjliggöra flertrådning, så att varje tråd kommer att se sitt eget trådlokala felnummer.
Rubrikfilen definierar också makron som expanderar till heltalskonstanter som representerar felkoderna. C -standardbiblioteket kräver bara tre för att definieras:
EDOM
- Resultat från en parameter utanför en funktions domän, t.ex.
sqrt ( -1 )
ERANGE
- Resultat från ett resultat utanför en funktions intervall, t.ex.
0 strtol ( "0xffffffffff" , NULL , )
på system med en 32-bitars bredlång
EILSEQ (krävs sedan 1994, tillägg 1 till C89-standarden)
- Resultat från en olaglig bytesekvens, t.ex.
mbstowcs ( buf , " \xff " , 1 )
på system som använder UTF-8 .
POSIX- kompatibla operativsystem som AIX , Linux eller Solaris inkluderar många andra felvärden, av vilka många används mycket oftare än de ovanstående, som EACCES för när en fil inte kan öppnas för läsning. C++11 definierar dessutom många av samma värden som finns i POSIX-specifikationen.
Traditionellt listar den första sidan i Unix systemmanualer , som heter intro(2), alla errno.h-makron, men detta är inte fallet med Linux , där dessa makron istället listas i errno(3).
Ett errno
kan översättas till en beskrivande sträng med hjälp av strerror (definierad i string.h ) eller en BSD-tillägg som kallas sys_errlist
. Översättningen kan skrivas ut direkt till standardfelströmmen med hjälp av perror (definierad i stdio.h ). Eftersom strerror i många Unix-liknande system inte är trådsäkert
används en trådsäker version strerror_r , men motstridiga definitioner från POSIX och GNU gör den ännu mindre portabel än
sys_errlist
-tabellen.
Se även
Bibliografi
- Stevens, W. Richard; Rago, Stephen A. (24 maj 2013). Avancerad programmering i UNIX-miljön (tredje upplagan). Addison-Wesley Professional . ISBN 978-0321637734 . Hämtad 27 februari 2015 .
externa länkar
- FreeBSD System Calls Manual –
- Linux Programmerarmanual – Biblioteksfunktioner –
- GNU C biblioteksmanual: Felkoder
- Listor över felvärden på Linux, både numeriska och symboliska