Voltar à lista
Linux x86_64Arquivos & E/S#0

read

Lê até count bytes de um descritor de arquivo para um buffer, avançando a posição do arquivo.

Descrição

A chamada de sistema mais fundamental de E/S no Unix: funciona da mesma forma sobre arquivos comuns, pipes, sockets, terminais e a maioria dos dispositivos, graças ao modelo 'tudo é um arquivo'. Pode retornar menos bytes do que o pedido (short read) mesmo sem erro nem fim de arquivo — programas robustos devem tratar isso em loop.

Header: unistd.hman 2

Assinatura

ssize_t read(int fd, void * buf, size_t count);

Parâmetros

ParâmetroTipoDescrição
fdintDescritor de arquivo a ler.
bufvoid *Buffer de destino.
countsize_tNúmero máximo de bytes a ler.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdint
rsiargumento 2bufvoid *
rdxargumento 3countsize_t

Valor de retorno

Número de bytes lidos (0 indica fim de arquivo) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EBADF(9)
Descritor de arquivo inválido.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
EIO(5)
Erro de E/S físico.

Relacionadas

Equivalente em Windows Win32