Udostępnij za pośrednictwem


errno, _doserrno, _sys_errlist, and _sys_nerr

Makra globalne, które zawierają kody błędów, które są ustawiane podczas wykonywania programu i równoważnych ciąg kodów błędów w celu wyświetlenia.

#define errno   (*_errno()) #define _doserrno   (*__doserrno()) #define _sys_errlist (__sys_errlist()) #define _sys_nerr (*__sys_nerr())

Uwagi

Zarówno errno, jak i _doserrno są ustawione na 0 w czasie wykonywania podczas uruchamiania programu.errno jest ustawiona na błąd w wywołaniu systemowym.Ponieważ errno ma wartość ostatniego wywołania, które ją ustawiło, wartość ta może zostać zmieniona przez kolejne wywołania.Wywołania biblioteki czasu wykonania, które ustawiają errno na błąd, nie czyszczą errno w przypadku powodzenia.Wyczyść zawsze errno przez wywołanie metody _set_errno(0) bezpośrednio przed wywołanie, które może ono określone i zaznacz go bezpośrednio po wywołaniu.

W przypadku błędu, errno nie jest zawsze ustawiana na taką samą wartość, jak kod błędu zwrócony przez wywołanie systemowe.W przypadku operacji We/Wy _doserrno przechowuje równoważnych kod błędu systemu operacyjnego z errno kody.W przypadku większości operacji bez I/O wartość _doserrno nie została ustawiona.

Każdy errno wartość jest skojarzony z komunikatem o błędzie w _sys_errlist mogą być drukowane przy użyciu jednego z perror funkcje lub przechowywane w ciągu przy użyciu jednego z strerror lub strerror_s funkcji.perror i strerror Użyj funkcji _sys_errlist tablicy i _sys_nerr— liczba elementów w _sys_errlist— do przetwarzania informacji o błędzie.Bezpośredni dostęp do _sys_errlist i _sys_nerr jest przestarzały ze względów bezpieczeństwa kodu.Zalecamy użycie bardziej bezpieczne, funkcjonalne wersje zamiast makra globalne, jak pokazano poniżej:

Globalne makra

Funkcjonalne odpowiedniki

_doserrno

_get_doserrno,_set_doserrno

errno

_get_errno, _set_errno

_sys_errlist, _sys_nerr

strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Procedury matematyczne biblioteki ustawiają errno przez wywołanie _matherr.Aby obsługiwać błędy matematyczne w inny sposób, napisz własną procedurę według opisu referencyjnego _matherr i nadaj jej nazwę _matherr.

Wszystkie errno wartości w poniższej tabeli przedstawiono wstępnie zdefiniowanych stałych w < errno.h > i są zgodne z systemem UNIX.Tylko ERANGE, EILSEQ i EDOM są określone w normie ISO C99.

Stała

Systemowy komunikat o błędzie

Wartość

EPERM

Operacja niedozwolona

1

ENOENT

Nie ma takiego pliku lub katalogu

2

ESRCH

Nie ma takiego procesu

3

EINTR

Funkcja przerwana

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

Brak procesów zduplikowanych

10

EAGAIN

Brak procesów lub za mało pamięci, lub osiągnięto maksymalny poziom zagnieżdżenia

11

ENOMEM

Za mało pamięci

12

EACCES

Odmowa uprawnień

13

EFAULT

Zły adres

14

EBUSY

Urządzenie lub zasoby są zajęte

16

EEXIST

Plik istnieje

17

EXDEV

Łącze między urządzeniami

18

ENODEV

Nie ma takiego urządzenia

19

ENOTDIR

Nie jest katalogiem

20

EISDIR

Jest katalogiem

21

EINVAL

Nieprawidłowy argument

22

ENFILE

Zbyt wiele otwartych plików w systemie

23

EMFILE

Zbyt wiele otwartych plików

24

ENOTTY

Niewłaściwe działanie sterowania We/Wy

25

EFBIG

Plik jest za duży

27

ENOSPC

Nie ma miejsca na urządzeniu

28

ESPIPE

Nieprawidłowe wyszukiwanie

29

EROFS

System plików tylko do odczytu

30

EMLINK

Za dużo łączy

31

EPIPE

Potok jest przerwany

32

EDOM

Argument matematyczny

33

ERANGE

Wynik za duży

34

EDEADLK

Wystąpiłoby zakleszczenie zasobu

36

EDEADLOCK

Tak samo jak EDEADLK w celu zachowania zgodności z poprzednimi wersjami Microsoft C

36

ENAMETOOLONG

Za długa nazwa pliku

38

ENOLCK

Blokady nie są dostępne

39

ENOSYS

Funkcja nieobsługiwana

40

ENOTEMPTY

Katalog nie jest pusty

41

EILSEQ

Nieprawidłowa sekwencja bajtów

42

STRUNCATE

Obcięto ciąg

80

Wymagania

Globalne makra

Wymagany nagłówek

Opcjonalne nagłówka

errno

< errno.h > lub < stdlib.h >, < cerrno > lub < cstdlib > (C++)

_doserrno, _sys_errlist, _sys_nerr

< stdlib.h >, < cstdlib > (C++)

< errno.h >, < cerrno > (C++)

_doserrno, _sys_errlist, I _sys_nerr makra są rozszerzenia Microsoft.Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność.

Zobacz też

Informacje

Zmienne globalne

errno — Stałe

perror, _wperror

strerror, _strerror, _wcserror, __wcserror

strerror_s, _strerror_s, _wcserror_s, __wcserror_s

_get_doserrno

_set_doserrno

_get_errno

_set_errno