Linux x86_64Arquivos & E/S#18
pwrite64
Escreve em um descritor de arquivo em um deslocamento específico, sem alterar (nem depender d)a posição atual do arquivo.
Descrição
Contraparte de escrita de `pread64`; igualmente atômica em relação à posição do arquivo.
Header:
unistd.hman 2Assinatura
ssize_t pwrite64(int fd, const void * buf, size_t count, off_t offset);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | int | Descritor de arquivo (deve ser posicionável). |
| buf | const void * | Buffer de origem. |
| count | size_t | Número máximo de bytes a escrever. |
| offset | off_t | Deslocamento absoluto de onde escrever. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fdint |
| rsi | argumento 2 | bufconst void * |
| rdx | argumento 3 | countsize_t |
| r10 | argumento 4 | offsetoff_t |
Valor de retorno
Número 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.
- ESPIPE(29)
- Seek inválido (descritor não posicionável, ex.: pipe).