errno, _doserrno, _sys_errlist und _sys_nerr

Diese globalen Variablen speichern Fehlercodes Verwendung durch die perror und strerror-Funktionen zum Drucken von Fehlermeldungen an.Diese sichereren funktionalen Versionen, die in dieser Tabelle aufgeführt sind, sollten anstelle ihrer globalen Variablen verwendet werden.

Globale Variablen

Funktionale Entsprechungen

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_errno

Diese Variablen werden in STDLIB.H deklariert z.

extern int _doserrno; 
extern int errno; 
extern char *_sys_errlist[ ];
extern int _sys_nerr;

Hinweise

errno und _errno werden an die gleiche Variable verbunden.errno wird mit dem Code definiert #define errno (*_errno())

errno wird auf einem Fehler in einem Aufruf auf Systemebene festgelegt.Da errno den Wert für den letzten Aufruf enthält, der ihn festlegen, wird dieser Wert geändert werden, indem Aufrufe folgt.Überprüfen Sie immer errno unmittelbar vor und nach dem Aufruf, der diese fest.

Bei einem Fehler wird errno nicht unbedingt auf den gleichen Wert wie der Fehlercode festgelegt, der durch einen Systemaufruf zurückgegeben wurde.Für E/A-Vorgänge, die _doserrno Verwendung von entsprechungen entspricht Betriebssystem errno Code zugreifen.Für die meisten non-I/O Vorgänge wird der Wert von _doserrno nicht definiert.

Jeder errno-Wert wird mit einer Fehlermeldung zugeordnet, die mit perror gedruckt oder in einer Zeichenfolge mit strerrorgespeichert werden kann.perror und strerror verwenden das _sys_errlist Array, _sys_nerr, die Anzahl der Elemente in _sys_errlist, um Fehlerinformationen zu verarbeiten.

Mathematische Routinen der Bibliothek errno legen Sie fest, indem sie _matherraufgerufen haben.Um mathematische Fehler anders zu behandeln, schreiben Sie besitzen Routine gemäß der Beschreibung der Verweise _matherr und benennen diese _matherr.

Alle errno-Werte, definiert als vordefinierte Konstanten in ERRNO.H, sind im Folgenden aufgeführt werden und UNIX-kompatibel.Nur ERANGE, EILSEQ und EDOM werden im ANSI-Standard angegeben.

Konstante

Systemfehler Fehlermeldung

Wert

EPERM

Vorgang nicht zulässig

1

ENOENT

Eine solche Datei oder das Verzeichnis

2

ESRCH

Keine so Prozess

3

EINTR

Unterbrochene Funktion

4

EIO

E/A-Fehler

5

ENXIO

Es wurde kein solches Gerät oder Adresse

6

E2BIG

Argumentliste zu lang

7

ENOEXEC

Fehler im Format Leitprogramm

8

EBADF

Ungültiges Dateiverweise

9

ECHILD

Keine erzeugten Prozesse

10

EAGAIN

Nicht mehr Prozesse oder nicht genügend Speicher oder Schachtelungsebene Maximum erreicht

11

ENOMEM

Nicht genügend Arbeitsspeicher

12

EACCES

Berechtigung verweigert.

13

EFAULT

Ungültige Adresse

14

EBUSY

Gerät oder Ressource ausgelastet

16

EEXIST

Datei vorhanden ist

17

EXDEV

Referenz zu Dateisystemgrenzen

18

ENODEV

Es wurde kein solches Gerät

19

ENOTDIR

Kein Verzeichnis

20

EISDIR

Ist ein Verzeichnis

21

EINVAL

Ungültiges Argument

22

ENFILE

Zu viele Dateien geöffnet im System

23

EMFILE

Zu viele Öffnen von Dateien

24

ENOTTY

Ungeeigneter E/A-Steuerungs-Vorgang

25

EFBIG

Datei zu groß

27

ENOSPC

Kein Speicherplatz noch ein Gerät

28

ESPIPE

Ungültige Suche

29

EROFS

Ein schreibgeschützter Dateisystem

30

EMLINK

Zu viele Links

31

EPIPE

Unterbrochene Pipe

32

EDOM

Mathematisches Argument

33

ERANGE

Ergebnis zu groß

34

EDEADLK

auftreten würde deadlock Ressourcen

36

EDEADLOCK

Identisch mit EDEADLK aus Gründen der Kompatibilität mit älteren Microsoft C-Versionen

36

ENAMETOOLONG

Name zu lang

38

ENOLCK

Keine verfügbaren Sperren

39

ENOSYS

Funktion nicht unterstützt

40

ENOTEMPTY

Verzeichnis nicht leer

41

EILSEQ

Ungültige Bytefolge

42

STRUNCATE

Zeichenfolge abgeschnitten wurde

80

Siehe auch

Referenz

Globale Variablen

errno-Konstanten

perror

strerror

_get_doserrno

_set_doserrno

_get_errno

_set_errno