errno.h - errno.h
| C-standardbibliotek |
|---|
| Allmänna ämnen |
| Diverse rubriker |
errno.h är en rubrikfil i standardbiblioteket för C-programmeringsspråket . Den definierar makron för rapportering och hämtning av felförhållanden med hjälp av symbolen errno (förkortning för "felnummer").
errno fungerar som en heltalsvariabel. Ett värde (felnumret) lagras i errno vissa biblioteksfunktioner när de upptäcker fel. Vid programstart är det lagrade värdet noll. Biblioteksfunktioner lagrar endast värden som är större än noll. Vilken biblioteksfunktion som helst kan ändra värdet som lagras före retur, oavsett om de upptäcker fel eller inte. De flesta funktioner indikerar att de upptäckte ett fel genom att returnera ett specialvä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 den efteråt för att se om ett fel upptäcktes.
De errno makro expanderar till en Lvärde med typ int , ibland med de extern och / eller volatile typ specificerare 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 ser sitt eget trådlokala felnummer.
Rubrikfilen definierar också makron som expanderar till heltalskonstanter som representerar felkoderna. Den C-standard bibliotek kräver bara tre som ska definieras:
EDOM
- Resultat från en parameter utanför en funktions domän, t.ex.
sqrt(-1)
FEL
- Resultat från ett resultat utanför en funktions räckvidd, t.ex.
strtol("0xfffffffff",NULL,0)på system med 32-bitars breddlong
EILSEQ (krävs sedan 1994 ändring 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 innehåller många andra felvärden, varav många används mycket oftare än ovanstående, till exempel 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-systemhandböckerna , namnet intro (2), alla errno.h-makron, men så är inte fallet med Linux , där dessa makron istället listas i errno (3).
En errno kan översättas till en beskrivande sträng med strerror (definierad i string.h ) eller ett 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 ). Som strerror i många Unix-liknande system inte är trådsäker används en trådsäker version strerror_r , men motstridiga definitioner från POSIX och GNU gör den ännu mindre bärbar än sys_errlist tabellen.
Se även
Referenser
Bibliografi
- Stevens, W. Richard; Rago, Stephen A. (24 maj 2013). Avancerad programmering i UNIX-miljö (tredje upplagan). Addison-Wesley Professional . ISBN 978-0321637734 . Hämtad 27 februari 2015 .
externa länkar
- - FreeBSD System Calls Manual
- - Linux programmerare Manual - biblioteksfunktioner
- GNU C-biblioteksmanual: Felkoder
- Listor över errno-värden på Linux, både numeriska och symboliska