errno, _doserrno, _sys_errlist e _sys_nerr
Essas variáveis global mantêm códigos de erro usados pelo perror and strError funções para imprimir as mensagens de erro.As versões funcionais mais seguras listadas nesta tabela deve ser usada no lugar de sua variável global.
Variável global |
Equivalentes funcionais |
---|---|
_doserrno |
|
_errno |
Essas variáveis são declaradas em STDLIB.H sistema autônomo
extern int _doserrno;
extern int errno;
extern char *_sys_errlist[ ];
extern int _sys_nerr;
Comentários
errno é conjunto em um erro em uma telefonar de nível de sistema. Porque errno mantém o valor para a última telefonar que conjunto, esse valor pode ser alterado pelo sucesso telefonars. Sempre verifique errno imediatamente antes e após uma telefonar pode conjunto-lo.
Em um erro, errno não necessariamente está definido para o mesmo valor sistema autônomo o código de erro retornado por uma telefonar do sistema. Para operações de E/s, use _doserrno para acessar os equivalentes do código de erro do sistema operacional de errno códigos. Para a maioria das operações não E/S o valor de _doserrno não está definida.
Cada errno valor está associado a uma mensagem de erro pode ser impresso com perror ou está armazenado em uma seqüência de caracteres com strerror. perror e strerror Use o _sys_errlist matriz e _sys_nerr, o número de elementos _sys_errlist, para processar informações de erro.
De conjunto de rotinas da biblioteca de matemáticaerrno chamando _matherr.Para manipular erros de matemática diferente, escrever sua própria rotina de acordo com o _matherr Descrição de referência e nomeie-o _matherr.
All errno valores, definidos sistema autônomo constantes predefinidas no ERRNO.H, são compatível com o UNIX e estão listados abaixo. Apenas ERANGE, EILSEQ e EDOM são especificados no ANSI padrão.
Constante |
Mensagem de erro do sistema |
Valor |
---|---|---|
EPERM |
Operação não permitida |
1 |
ENOENT |
Não existe tal arquivo ou diretório |
2 |
ESRCH |
Processo inexistente |
3 |
EINTR |
Função interrompida |
4 |
EIO |
Erro de E/s |
5 |
ENXIO |
Não existe tal dispositivo ou endereço |
6 |
E2BIG |
Lista de argumentos muito longa |
7 |
ENOEXEC |
Erro de formato de EXEC |
8 |
EBADF |
Número de arquivo incorreto |
9 |
ECHILD |
Nenhum processo gerado |
10 |
EAGAIN |
Não há mais processos ou insuficiente nível de aninhamento de memória ou máximo alcançado |
11 |
ENOMEM |
Não há memória suficiente |
12 |
EACCES |
Permissão negada |
13 |
EFAULT |
Endereço incorreto |
14 |
EBUSY |
Dispositivo ou recurso ocupado |
16 |
EEXIST |
O arquivo existe |
17 |
EXDEV |
Link de entre dispositivos |
18 |
ENODEV |
Dispositivo inexistente |
19 |
ENOTDIR |
Não é um diretório |
20 |
EISDIR |
É um diretório |
21 |
EINVAL |
Argumento inválido |
22 |
ENFILE |
Muitos arquivos em aberto no sistema |
23 |
EMFILE |
Muitos arquivos abertos |
24 |
ENOTTY |
Operação de controle de E/s inadequada |
25 |
EFBIG |
Arquivo muito grande |
27 |
ENOSPC |
Mais espaço no dispositivo |
28 |
ESPIPE |
Busca inválido |
29 |
EROFS |
Sistema de arquivos somente leitura |
30 |
EMLINK |
Número excessivo de links |
31 |
EPIPE |
Pipe interrompido |
32 |
EDOM |
Argumento matemático |
33 |
ERANGE |
Resultado muito grande |
34 |
EDEADLK |
Ocorreria um deadlock de recursos |
36 |
EDEADLOCK |
Mesmo que EDEADLK para compatibilidade com versões mais antigas do Microsoft C |
36 |
ENAMETOOLONG |
Nome do arquivo muito longo |
38 |
ENOLCK |
Não há bloqueios disponível |
39 |
ENOSYS |
Função sem suporte |
40 |
ENOTEMPTY |
Diretório não está vazio |
41 |
EILSEQ |
sequência de byte ilegal |
42 |
STRUNCATE |
Seqüência de caracteres foi truncada |
80 |