errno, _doserrno, _sys_errlist, and _sys_nerr

Macro globali che contengono i codici di errore impostati durante l'esecuzione del programma e stringhe equivalenti dei codici di errore per la visualizzazione.

Sintassi

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

Note

Entrambe le parole chiave errno e _doserrno vengono impostate su 0 dal runtime durante l'avvio del programma. errno è impostato su un errore in una chiamata a livello di sistema. Poiché errno contiene il valore dell'ultima chiamata che l'ha impostata, questo valore può essere modificato dalle chiamate successive. Le chiamate della libreria di runtime che impostano errno su un errore non cancellano errno in caso di operazione riuscita. Cancellare sempre errno chiamando _set_errno(0) immediatamente prima di una chiamata che potrebbe impostarla e verificarla immediatamente dopo la chiamata.

Al verificarsi di un errore, errno non viene necessariamente impostata sullo stesso valore del codice di errore restituito da una chiamata di sistema. Per le operazioni di I/O, _doserrno archivia i codici di errore equivalenti del sistema operativo dei codici errno. Per la maggior parte delle operazioni non di I/O, il valore di _doserrno non è definito.

Ogni valore errno è associato a un messaggio di errore in _sys_errlist che può essere stampato usando una delle funzioni perror o archiviato in una stringa usando una delle funzioni strerror o strerror_s. Le funzioni perror e strerror usano la matrice _sys_errlist e _sys_nerr, il numero di elementi in _sys_errlist, per elaborare le informazioni sugli errori. Per motivi di sicurezza del codice, l'accesso diretto a _sys_errlist e _sys_nerr è deprecato. È consigliabile usare le versioni funzionali più sicure anziché le macro globali, come illustrato di seguito:

Macro globale Equivalenti funzionali
_doserrno _get_doserrno, _set_doserrno
errno _get_errno, _set_errno
_sys_errlist, _sys_nerr strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Le routine matematiche della libreria impostano errno chiamando _matherr. Per gestire gli errori matematici in modo diverso, scrivere una routine in base alla descrizione di riferimento di _matherr e assegnare ad essa il nome _matherr.

Tutti i valori errno nella tabella di seguito sono costanti predefinite in <errno.h> e sono compatibili con UNIX. Solo ERANGE, EILSEQ e EDOM sono specificate nello standard ISO C99.

Costante Messaggio di errore di sistema Valore
EPERM Operazione non consentita 1
ENOENT Nessun file o directory di questo tipo 2
ESRCH Nessun processo di questo tipo 3
EINTR Funzione interrotta 4
EIO Errore di I/O 5
ENXIO Nessun dispositivo o indirizzo di questo tipo 6
E2BIG Elenco degli argomenti troppo lungo 7
ENOEXEC Errore di formato exec 8
EBADF Numero file errato 9
ECHILD Nessun processo generato 10
EAGAIN Nessun altro processo, memoria insufficiente o raggiunto livello di annidamento massimo 11
ENOMEM Memoria insufficiente 12
EACCES Autorizzazione negata 13
EFAULT Indirizzo errato 14
EBUSY Dispositivo o risorsa occupata 16
EEXIST Il file esiste 17
EXDEV Collegamento incrociato dispositivo 18
ENODEV Nessun dispositivo di questo tipo 19
ENOTDIR Non è una directory 20
EISDIR È una directory 21
EINVAL Argomento non valido 22
ENFILE Troppi file aperti nel sistema 23
EMFILE Troppi file aperti 24
ENOTTY Operazione di controllo di I/O non appropriata 25
EFBIG File troppo grande 27
ENOSPC Spazio esaurito sul dispositivo 28
ESPIPE Ricerca non valida 29
EROFS File system di sola lettura 30
EMLINK Troppi collegamenti 31
EPIPE Pipe interrotta 32
EDOM Argomento matematico 33
ERANGE Risultato troppo grande 34
EDEADLK Si verificherebbe un deadlock delle risorse 36
EDEADLOCK Equivale a EDEADLK per compatibilità con le versioni precedenti di Microsoft C 36
ENAMETOOLONG Nome file troppo lungo 38
ENOLCK Nessun blocco disponibile 39
ENOSYS Funzione non supportata 40
ENOTEMPTY Directory non vuota 41
EILSEQ Sequenza di byte non valida 42
STRUNCATE Stringa troncata 80

Requisiti

Macro globale Intestazione obbligatoria Intestazione facoltativa
errno <errno.h> or <stdlib.h>, <cerrno> o <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr <stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)

Le macro _doserrno, _sys_errlist e _sys_nerr sono estensioni Microsoft. Per altre informazioni sulla compatibilità, vedere Compatibilità.

Vedere anche

Global Variables (Variabili globali)
Costanti errno
perror, _wperror
strerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno