errno, _doserrno, _sys_errlist, and _sys_nerrerrno, _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.Global macros that hold error codes that are set during program execution, and string equivalents of the error codes for display.

SintassiSyntax

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

NoteRemarks

Entrambe le parole chiave errno e _doserrno vengono impostate su 0 dal runtime durante l'avvio del programma.Both errno and _doserrno are set to 0 by the runtime during program startup. errno è impostato su un errore in una chiamata a livello di sistema.errno is set on an error in a system-level call. Poiché errno contiene il valore dell'ultima chiamata che l'ha impostata, questo valore può essere modificato dalle chiamate successive.Because errno holds the value for the last call that set it, this value may be changed by succeeding calls. Le chiamate della libreria di runtime che impostano errno su un errore non cancellano errno in caso di operazione riuscita.Run-time library calls that set errno on an error do not clear errno on success. Cancellare sempre errno chiamando _set_errno(0) immediatamente prima di una chiamata che potrebbe impostarla e verificarla immediatamente dopo la chiamata.Always clear errno by calling _set_errno(0) immediately before a call that may set it, and check it immediately after the call.

Al verificarsi di un errore, errno non viene necessariamente impostata sullo stesso valore del codice di errore restituito da una chiamata di sistema.On an error, errno is not necessarily set to the same value as the error code returned by a system call. Per le operazioni di I/O, _doserrno archivia i codici di errore equivalenti del sistema operativo dei codici errno.For I/O operations, _doserrno stores the operating-system error-code equivalents of errno codes. Per la maggior parte delle operazioni non di I/O, il valore di _doserrno non è definito.For most non-I/O operations, the value of _doserrno is not set.

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.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. 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.The perror and strerror functions use the _sys_errlist array and _sys_nerr—the number of elements in _sys_errlist—to process error information. Per motivi di sicurezza del codice, l'accesso diretto a _sys_errlist e _sys_nerr è deprecato.Direct access to _sys_errlist and _sys_nerr is deprecated for code-security reasons. È consigliabile usare le versioni funzionali più sicure anziché le macro globali, come illustrato di seguito:We recommend that you use the more secure, functional versions instead of the global macros, as shown here:

Macro globaleGlobal Macro Equivalenti funzionaliFunctional 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

Le routine matematiche della libreria impostano errno chiamando _matherr.Library math routines set errno by calling _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.To handle math errors differently, write your own routine according to the _matherr reference description and name it _matherr.

Tutti i valori errno nella tabella di seguito sono costanti predefinite in <errno.h> e sono compatibili con UNIX.All errno values in the following table are predefined constants in <errno.h>, and are UNIX-compatible. Solo ERANGE, EILSEQ e EDOM sono specificate nello standard ISO C99.Only ERANGE, EILSEQ, and EDOM are specified in the ISO C99 standard.

CostanteConstant Messaggio di errore di sistemaSystem error message ValoreValue
EPERM Operazione non consentitaOperation not permitted 11
ENOENT Nessun file o directory di questo tipoNo such file or directory 22
ESRCH Nessun processo di questo tipoNo such process 33
EINTR Funzione interrottaInterrupted function 44
EIO Errore di I/OI/O error 55
ENXIO Nessun dispositivo o indirizzo di questo tipoNo such device or address 66
E2BIG Elenco degli argomenti troppo lungoArgument list too long 77
ENOEXEC Errore di formato execExec format error 88
EBADF Numero file erratoBad file number 99
ECHILD Nessun processo generatoNo spawned processes 1010
EAGAIN Nessun altro processo, memoria insufficiente o raggiunto livello di annidamento massimoNo more processes or not enough memory or maximum nesting level reached 1111
ENOMEM Memoria insufficienteNot enough memory 1212
EACCES Autorizzazione negataPermission denied 1313
EFAULT Indirizzo erratoBad address 1414
EBUSY Dispositivo o risorsa occupataDevice or resource busy 1616
EEXIST Il file esisteFile exists 1717
EXDEV Collegamento incrociato dispositivoCross-device link 1818
ENODEV Nessun dispositivo di questo tipoNo such device 1919
ENOTDIR Non è una directoryNot a directory 2020
EISDIR È una directoryIs a directory 2121
EINVAL Argomento non validoInvalid argument 2222
ENFILE Troppi file aperti nel sistemaToo many files open in system 2323
EMFILE Troppi file apertiToo many open files 2424
ENOTTY Operazione di controllo di I/O non appropriataInappropriate I/O control operation 2525
EFBIG File troppo grandeFile too large 2727
ENOSPC Spazio esaurito sul dispositivoNo space left on device 2828
ESPIPE Ricerca non validaInvalid seek 2929
EROFS File system di sola letturaRead-only file system 3030
EMLINK Troppi collegamentiToo many links 3131
EPIPE Pipe interrottaBroken pipe 3232
EDOM Argomento matematicoMath argument 3333
ERANGE Risultato troppo grandeResult too large 3434
EDEADLK Si verificherebbe un deadlock delle risorseResource deadlock would occur 3636
EDEADLOCK Equivale a EDEADLK per compatibilità con le versioni precedenti di Microsoft CSame as EDEADLK for compatibility with older Microsoft C versions 3636
ENAMETOOLONG Nome file troppo lungoFilename too long 3838
ENOLCK Nessun blocco disponibileNo locks available 3939
ENOSYS Funzione non supportataFunction not supported 4040
ENOTEMPTY Directory non vuotaDirectory not empty 4141
EILSEQ Sequenza di byte non validaIllegal byte sequence 4242
STRUNCATE Stringa troncataString was truncated 8080

RequisitiRequirements

Macro globaleGlobal macro Intestazione obbligatoriaRequired header Intestazione facoltativaOptional header
errno <errno.h> or <stdlib.h>, <cerrno> o <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++)

Le macro _doserrno, _sys_errlist e _sys_nerr sono estensioni Microsoft.The _doserrno, _sys_errlist, and _sys_nerr macros are Microsoft extensions. Per altre informazioni sulla compatibilità, vedere Compatibilità.For more compatibility information, see Compatibility.

Vedere ancheSee Also

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