errno, _doserrno, _sys_errlist, and _sys_nerrerrno, _doserrno, _sys_errlist, and _sys_nerr

Makra globalne, które zawierają kody błędów, które są ustawiane podczas wykonywania programu, oraz odpowiedników ciągów kodów błędów do wyświetlenia.Global macros that hold error codes that are set during program execution, and string equivalents of the error codes for display.

SkładniaSyntax

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

UwagiRemarks

Oba errno i _doserrno są ustawione na 0 przez środowisko uruchomieniowe podczas uruchamiania programu.Both errno and _doserrno are set to 0 by the runtime during program startup. errno jest ustawiony na błąd w wywołaniu na poziomie systemu.errno is set on an error in a system-level call. Ponieważ errno przechowuje wartość dla ostatniego wywołania, które go ustawi, ta wartość może zostać zmieniona przez pomyślne wywołania.Because errno holds the value for the last call that set it, this value may be changed by succeeding calls. Wywołania biblioteki czasu wykonywania ustawione errno dla błędu nie są czyszczone errno po pomyślnym zalogowaniu.Run-time library calls that set errno on an error do not clear errno on success. Zawsze czyść errno , wywołując _set_errno(0) bezpośrednio przed wywołaniem, które może go ustawić, i sprawdź je bezpośrednio po wywołaniu.Always clear errno by calling _set_errno(0) immediately before a call that may set it, and check it immediately after the call.

W przypadku błędu errno nie musi być ustawiona taka sama wartość jak kod błędu zwracany przez wywołanie systemowe.On an error, errno is not necessarily set to the same value as the error code returned by a system call. W przypadku operacji we/wy program _doserrno przechowuje równoważne kody kodów błędów systemu operacyjnego errno .For I/O operations, _doserrno stores the operating-system error-code equivalents of errno codes. W przypadku większości operacji innych niż we/wy wartość _doserrno nie jest ustawiona.For most non-I/O operations, the value of _doserrno is not set.

Każda errno wartość jest skojarzona z komunikatem o błędzie w programie _sys_errlist , który można wydrukować przy użyciu jednej z funkcji pError lub przechowywanych w ciągu przy użyciu jednej z funkcji strerror lub strerror_s .Each errno value is associated with an error message in _sys_errlist that can be printed by using one of the perror functions, or stored in a string by using one of the strerror or strerror_s functions. perrorFunkcje i strerror wykorzystują _sys_errlist tablicę i _sys_nerr — liczbę elementów w _sys_errlist — do przetwarzania informacji o błędach.The perror and strerror functions use the _sys_errlist array and _sys_nerr—the number of elements in _sys_errlist—to process error information. Bezpośredni dostęp do _sys_errlist i _sys_nerr jest przestarzały ze względu na zabezpieczenia kodu.Direct access to _sys_errlist and _sys_nerr is deprecated for code-security reasons. Zalecamy korzystanie z bezpieczniejszych wersji funkcjonalnych zamiast makr globalnych, jak pokazano poniżej:We recommend that you use the more secure, functional versions instead of the global macros, as shown here:

Makro globalneGlobal Macro Funkcjonalne odpowiednikiFunctional Equivalents
_doserrno _get_doserrno, _set_doserrno_get_doserrno, _set_doserrno
errno _get_errno, _set_errno_get_errno, _set_errno
_sys_errlist, _sys_nerr_sys_errlist, _sys_nerr strerror_s, _strerror_s, _wcserror_s _ _wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s

Procedury matematyczne biblioteki są ustawiane errno przez wywołanie _matherr.Library math routines set errno by calling _matherr. Aby obsłużyć błędy matematyczne w inny sposób, napisz własną procedurę zgodnie z _matherr opisem odwołania i nadaj jej nazwę _matherr .To handle math errors differently, write your own routine according to the _matherr reference description and name it _matherr.

Wszystkie errno wartości w poniższej tabeli są wstępnie zdefiniowanymi stałymi w programie <errno.h> i są zgodne z systemem UNIX.All errno values in the following table are predefined constants in <errno.h>, and are UNIX-compatible. Tylko ERANGE , EILSEQ i EDOM są określone w standardzie ISO C99.Only ERANGE, EILSEQ, and EDOM are specified in the ISO C99 standard.

StałaConstant Systemowy komunikat o błędzieSystem error message WartośćValue
EPERM Operacja niedozwolonaOperation not permitted 11
ENOENT Nie ma takiego pliku lub kataloguNo such file or directory 22
ESRCH Nie ma takiego procesuNo such process 33
EINTR Funkcja przerwanaInterrupted function 44
EIO Błąd We/WyI/O error 55
ENXIO Nie ma takiego urządzenia lub adresuNo such device or address 66
E2BIG Lista argumentów jest za długaArgument list too long 77
ENOEXEC Błąd formatu pliku wykonywalnegoExec format error 88
EBADF Zły numer plikuBad file number 99
ECHILD Brak procesów zduplikowanychNo spawned processes 1010
EAGAIN Brak procesów lub za mało pamięci, lub osiągnięto maksymalny poziom zagnieżdżeniaNo more processes or not enough memory or maximum nesting level reached 1111
ENOMEM Za mało pamięciNot enough memory 1212
EACCES Odmowa uprawnieńPermission denied 1313
EFAULT Zły adresBad address 1414
EBUSY Urządzenie lub zasoby są zajęteDevice or resource busy 1616
EEXIST Plik istniejeFile exists 1717
EXDEV Łącze między urządzeniamiCross-device link 1818
ENODEV Nie ma takiego urządzeniaNo such device 1919
ENOTDIR Nie jest katalogiemNot a directory 2020
EISDIR Jest katalogiemIs a directory 2121
EINVAL Nieprawidłowy argumentInvalid argument 2222
ENFILE Zbyt wiele otwartych plików w systemieToo many files open in system 2323
EMFILE Zbyt wiele otwartych plikówToo many open files 2424
ENOTTY Niewłaściwe działanie sterowania We/WyInappropriate I/O control operation 2525
EFBIG Plik jest za dużyFile too large 2727
ENOSPC Nie ma miejsca na urządzeniuNo space left on device 2828
ESPIPE Nieprawidłowe wyszukiwanieInvalid seek 2929
EROFS System plików tylko do odczytuRead-only file system 3030
EMLINK Za dużo łączyToo many links 3131
EPIPE Potok jest przerwanyBroken pipe 3232
EDOM Argument matematycznyMath argument 3333
ERANGE Wynik za dużyResult too large 3434
EDEADLK Wystąpiłoby zakleszczenie zasobuResource deadlock would occur 3636
EDEADLOCK Tak samo jak EDEADLK w celu zachowania zgodności z poprzednimi wersjami Microsoft CSame as EDEADLK for compatibility with older Microsoft C versions 3636
ENAMETOOLONG Za długa nazwa plikuFilename too long 3838
ENOLCK Blokady nie są dostępneNo locks available 3939
ENOSYS Funkcja nieobsługiwanaFunction not supported 4040
ENOTEMPTY Katalog nie jest pustyDirectory not empty 4141
EILSEQ Nieprawidłowa sekwencja bajtówIllegal byte sequence 4242
STRUNCATE Obcięto ciągString was truncated 8080

WymaganiaRequirements

Makro globalneGlobal macro Wymagany nagłówekRequired header Opcjonalny nagłówekOptional header
errno <errno.h> or <stdlib.h> lub <cerrno> <cstdlib> (C++)<errno.h> or <stdlib.h>, <cerrno> or <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr_doserrno, _sys_errlist, _sys_nerr <stdlib.h>, <cstdlib> (C++)<stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)<errno.h>, <cerrno> (C++)

_doserrnoMakra, _sys_errlist i _sys_nerr są rozszerzeniami firmy Microsoft.The _doserrno, _sys_errlist, and _sys_nerr macros are Microsoft extensions. Aby uzyskać więcej informacji o zgodności, zobacz zgodność.For more compatibility information, see Compatibility.

Zobacz teżSee also

Zmienne globalneGlobal Variables
errno — stałeerrno Constants
perror, _wperrorperror, _wperror
strerror, _strerror, _wcserror, _ _wcserrorstrerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s _ _wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno_get_doserrno
_set_doserrno_set_doserrno
_get_errno_get_errno
_set_errno_set_errno