Udostępnij za pośrednictwem


errno, _doserrno, _sys_errlist i _sys_nerr

Te zmienne globalne, przytrzymaj klawisz używany przez kody błędów perror i strerror funkcje drukowania komunikaty o błędach.Bezpieczniejsze funkcjonalne wersje wymienionych w tej tabeli powinny zostać wykorzystane w miejsce ich zmiennej globalnej.

Zmienna globalna

Funkcjonalne odpowiedniki

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_errno

Te zmienne są zadeklarowane w STDLIB.H jako

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

Uwagi

errnoi _errno są podłączone do tej samej zmiennej.errnozdefiniowano kod#define errno (*_errno())

errnomożna ustawić na błąd w wywołaniu poziomie systemu.Ponieważ errno posiada wartość dla ostatniego wywołania, które go tej wartości mogą zostać zmienione przez kolejnego wywołania.Zawsze sprawdzaj errno bezpośrednio przed i po wywołania, które mogą go.

W przypadku błędu errno niekoniecznie nie jest ustawiona na tę samą wartość jak kod błędu zwrócony przez wywołanie systemowe.Operacje We/Wy, użyj _doserrno odpowiedniki kod błędu systemu operacyjnego dostęp do errno kodów.Dla większości operacji non-I/O wartości _doserrno jest niezdefiniowane.

Każdy errno wartość jest skojarzony z komunikatem o błędzie, który może być wydrukowany przy użyciu perror lub przechowywane w ciągu za pomocą strerror.perrori strerror używać _sys_errlist tablicy i _sys_nerr, liczba elementów w _sys_errlist, aby przetwarzać informacje o błędzie.

Zestaw procedur math biblioteki errno , wywołując _matherr.Do obsługi błędów matematycznych w różny sposób, należy napisać własne procedury, zgodnie z _matherr odwołać się opis i nadaj mu nazwę _matherr.

Wszystkie errno wartości zdefiniowane jako stałe wstępnie zdefiniowanych w ERRNO.H, są zgodne z systemem UNIX i są wymienione poniżej.Tylko ERANGE, EILSEQ i EDOM są określone w standardzie ANSI.

Stała

Komunikat o błędzie systemu

Wartość

EPERM

Operacja nie jest dozwolona.

1

ENOENT

Nie ma takiego pliku lub katalogu

2

ESRCH

Nie ma takiego procesu

3

EINTR

Funkcja przerwane

4

EIO

Błąd We/Wy

5

ENXIO

Nie ma takiego urządzenia lub adresu

6

E2BIG

Lista argumentów jest za długa

7

ENOEXEC

Błąd formatu pliku wykonywalnego

8

EBADF

Zły numer pliku

9

ECHILD

Żadne procesy zduplikowanego

10

EAGAIN

Nie więcej procesów lub za mało pamięci lub maksymalny poziom zagnieżdżenia osiągnięty

11

ENOMEM

Za mało pamięci

12

EACCES

Odmowa uprawnień

13

EFAULT

Zły adres

14

EBUSY

Urządzenia lub zasobu jest zajęty

16

EEXIST

Plik istnieje

17

EXDEV

Łącze między urządzeniami

18

ENODEV

Nie ma takiego urządzenia

19

ENOTDIR

Nie w katalogu

20

EISDIR

Jest katalogu

21

EINVAL

Nieprawidłowy argument

22

ENFILE

Zbyt wiele plików, Otwórz w systemie

23

EMFILE

Zbyt wiele otwartych plików

24

ENOTTY

Niewłaściwa operacja sterowania We/Wy

25

EFBIG

Plik jest zbyt duży

27

ENOSPC

Brak miejsca na urządzeniu

28

ESPIPE

Nieprawidłowy seek

29

EROFS

System plików tylko do odczytu

30

EMLINK

Za dużo łączy

31

EPIPE

Przerwany potok

32

EDOM

Argument matematyczny

33

ERANGE

Wynik jest za duży

34

EDEADLK

Wystąpiłoby zakleszczenie zasobu

36

EDEADLOCK

Takie same, jak EDEADLK dla zgodności z poprzednimi wersjami programu Microsoft C

36

ENAMETOOLONG

Nazwa pliku jest zbyt długa

38

ENOLCK

Nie dostępnych blokad

39

ENOSYS

Funkcja nie jest obsługiwana.

40

ENOTEMPTY

Katalog nie jest pusty

41

EILSEQ

Nielegalne bajtowa sekwencja

42

STRUNCATE

Ciąg został obcięty.

80

Zobacz też

Informacje

Zmienne globalne

errno stałych

perror

strerror

_get_doserrno

_set_doserrno

_get_errno

_set_errno