Compartilhar via


errno, _doserrno, _sys_errlist e _sys_nerr

Essas variáveis globais mantém os códigos de erro usados pelo perror e strerror funções para imprimir mensagens de erro.Versões mais seguras funcionais listadas nesta tabela deve ser usada no lugar de sua variável global.

Variável global

Equivalentes funcionais

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_errno

Essas variáveis são declaradas em STDLIB.H como

extern int _doserrno; 
extern int errno; 
extern char *_sys_errlist[ ];
extern int _sys_nerr;

Comentários

errnoe _errno estão conectados à mesma variável.errnoé definido com o código#define errno (*_errno())

errnoé definida em um erro em uma chamada de nível de sistema.Porque errno o valor para a última chamada que defini-la, esse valor pode ser alterado por chamadas de sucesso de suspensões.Sempre verifique errno imediatamente antes e após uma chamada que pode defini-la.

Em um erro, errno não está necessariamente definido para o mesmo valor que o código de erro retornado por uma chamada de sistema.Para operações de i/O, use _doserrno para acessar os equivalentes de código de erro do sistema operacional de errno códigos.Para a maioria das operações de I/O não o valor de _doserrno é indefinido.

Cada errno valor está associado uma mensagem de erro que pode ser impressos usando perror ou armazenado em uma seqüência de caracteres com strerror.perrore strerror usar o _sys_errlist matriz e _sys_nerr, o número de elementos em _sys_errlist, para processar informações de erro.

Conjunto de rotinas de matemática de biblioteca errno chamando _matherr.Para manipular erros de matemática de uma forma diferente, escrever sua própria rotina de acordo com o _matherr referência a descrição e o nome de _matherr.

Todos os errno valores, definidos como constantes predefinidas na ERRNO.H, são compatíveis com o UNIX e são listados abaixo.Somente ERANGE, EILSEQ e EDOM são especificados no padrão ANSI.

Constante

Mensagem de erro do sistema

Valor

EPERM

Operação não permitida

1

ENOENT

Não há tal arquivo ou diretório

2

ESRCH

Processo inexistente

3

EINTR

Função interrompida

4

EIO

Erro de e/S

5

ENXIO

Não há 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

Não há processos de reprodução

10

EAGAIN

Não há mais processos ou nível de aninhamento não há memória ou no máximo atingido

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

Referência cruzada de dispositivo

18

ENODEV

Nenhum dispositivo desse tipo

19

ENOTDIR

Não é um diretório

20

EISDIR

É um diretório

21

EINVAL

Argumento inválido

22

ENFILE

Número excessivo de arquivos abertos no sistema

23

EMFILE

Muitos arquivos abertos

24

ENOTTY

Operação inadequada de controle de e/S

25

EFBIG

Arquivo muito grande

27

ENOSPC

Não há espaço no dispositivo

28

ESPIPE

Busca inválida

29

EROFS

Sistema de arquivos somente leitura

30

EMLINK

Há muitos vínculos

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 de arquivo muito longo

38

ENOLCK

Bloqueios não disponíveis

39

ENOSYS

Função não aceita

40

ENOTEMPTY

Pasta não está vazia

41

EILSEQ

Seqüência de byte ilegal

42

STRUNCATE

Seqüência de caracteres foi truncada.

80

Consulte também

Referência

Variáveis globais

errno constantes

perror

strError

_get_doserrno

_set_doserrno

_get_errno

_set_errno