Voltar à lista
Linux x86_64Arquivos & E/S#328

pwritev2

Como pwritev, mas aceita flags adicionais por chamada (ex.: RWF_DSYNC, RWF_APPEND).

Descrição

Permite, por exemplo, pedir que uma escrita específica seja síncrona (RWF_DSYNC/RWF_SYNC) sem abrir o arquivo inteiro com O_DSYNC.

man 2Desde o kernel 4.6

Assinatura

ssize_t pwritev2(
    int fd,
    const struct iovec * iov,
    int iovcnt,
    off_t offset,
    int flags
);

Parâmetros

ParâmetroTipoDescrição
fdintDescritor de arquivo.
iovconst struct iovec *Vetor de buffers de origem.
iovcntintNúmero de elementos em `iov`.
offsetoff_tDeslocamento absoluto de onde escrever (-1 usa a posição atual do arquivo).
flagsintRWF_DSYNC, RWF_SYNC, RWF_APPEND, etc.

Registradores (x86_64)

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

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.
ENOSPC(28)
Sem espaço livre no dispositivo.

Relacionadas