errno, _doserrno, _sys_errlist e _sys_nerr
Questi codici di errore di attività di variabili globali utilizzati da perror e strerror funzioni per la stampa dei messaggi di errore.Il più versioni funzionali sicure elencate nella tabella devono essere utilizzati al posto della variabile globale.
variabile globale |
equivalenti funzionali |
---|---|
_doserrno |
|
_errno |
Queste variabili vengono dichiarate in STDLIB.H come
extern int _doserrno;
extern int errno;
extern char *_sys_errlist[ ];
extern int _sys_nerr;
Note
errno e _errno si connettono alla stessa variabile.errno viene definito con il codice #define errno (*_errno())
errno è impostato su un errore in una chiamata a livello di sistema.Poiché errno utilizza il valore dell'ultima chiamata che lo imposta, questo valore può essere modificato completate le chiamate.sempre controllo errno immediatamente prima di e dopo una chiamata che possibile impostarla.
su un errore, errno non è necessariamente impostato sullo stesso valore del codice di errore restituito da una chiamata al sistema.Per le operazioni di I/O, utilizzare _doserrno per accedere agli equivalenti del sistema operativo di codice di errore errno codici.Per la maggior parte delle operazioni di non-I/O il valore di _doserrno è definito.
ciascuno errno il valore viene associato a un messaggio di errore di cui può essere stampato utilizzo perror o archiviato in una stringa tramite strerror.perror e strerror utilizzare _sys_errlist allineare e _sys_nerr, il numero di elementi in _sys_errlist, per elaborare informazioni sugli errori.
Routine matematiche di libreria impostate errno chiamando _matherr.Per gestire gli errori matematici in modo diverso, scrivere possiedono la routine come _matherr fare riferimento alla descrizione e denominarla _matherr.
tutti errno i valori, definiti come costanti predefinite in ERRNO.H, vengono UNIX-compatibili e sono elencati in.Solo ERANGE, EILSEQ e EDOM vengono specificati nello standard ANSI.
Costante |
messaggio di errore di sistema |
Valore |
---|---|---|
EPERM |
Operazione non valida |
1 |
ENOENT |
Tale file o directory |
2 |
ESRCH |
nessun tali processo |
3 |
EINTR |
funzione interrotta |
4 |
EIO |
errore di I/O |
5 |
ENXIO |
Tale dispositivo o indirizzo |
6 |
E2BIG |
Elenco di argomenti troppo lungo |
7 |
ENOEXEC |
Errore di formato exec |
8 |
EBADF |
Numero errato di file |
9 |
ECHILD |
Nessun processi compilati |
10 |
EAGAIN |
Non più processi o memoria insufficiente o massimo del livello di annidamento raggiunto |
11 |
ENOMEM |
Memoria insufficiente |
12 |
EACCES |
autorizzazione negata |
13 |
EFAULT |
errato indirizzo |
14 |
EBUSY |
Dispositivo o una risorsa occupata |
16 |
EEXIST |
il file esiste |
17 |
EXDEV |
Collegamento di collegamento |
18 |
ENODEV |
Tale dispositivo |
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 non corretta di I/O |
25 |
EFBIG |
file troppo grande |
27 |
ENOSPC |
Nessuno spazio a sinistra sul dispositivo |
28 |
ESPIPE |
ricerca non valida |
29 |
EROFS |
sistema di file di sola lettura |
30 |
EMLINK |
troppi collegamenti |
31 |
EPIPE |
Pipe interrotte |
32 |
EDOM |
Argomento matematico |
33 |
ERANGE |
risultato troppo grande |
34 |
EDEADLK |
Il deadlock di risorse si verificherà |
36 |
EDEADLOCK |
Equivalente a EDEADLK per compatibilità con le versioni precedenti di Microsoft C |
36 |
ENAMETOOLONG |
Nome file troppo lungo |
38 |
ENOLCK |
nessun blocchi disponibili |
39 |
ENOSYS |
funzione non supportata |
40 |
ENOTEMPTY |
directory non vuota |
41 |
EILSEQ |
Sequenza di byte non valida |
42 |
STRUNCATE |
la stringa è stata troncata |
80 |