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 |
|
errno |
|
_sys_errlist, _sys_nerr |
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
strerror, _strerror, _wcserror, __wcserror