Voltar à lista
Linux x86_64Arquivos & E/S#20

writev

Escreve dados vindos de múltiplos buffers para um descritor de arquivo em uma única chamada (gather output).

Descrição

Contraparte de escrita de `readv` — muito usada para montar mensagens de rede/protocolo a partir de cabeçalho e corpo sem uma cópia de concatenação prévia.

Header: sys/uio.hman 2

Assinatura

ssize_t writev(int fd, const struct iovec * iov, int iovcnt);

Parâmetros

ParâmetroTipoDescrição
fdintDescritor de arquivo.
iovconst struct iovec *Vetor de buffers de origem.
iovcntintNúmero de elementos em `iov`.

Registradores (x86_64)

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

Valor de retorno

Número total de bytes escritos 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.
EFBIG(27)
Arquivo grande demais.
EINVAL(22)
Argumento inválido.
EIO(5)
Erro de E/S físico.
ENOSPC(28)
Sem espaço livre no dispositivo.
EPIPE(32)
Pipe quebrado (sem leitor do outro lado).

Relacionadas