Linux x86_64Arquivos & E/S#8
lseek
Reposiciona o cursor de leitura/escrita de um descritor de arquivo.
Descrição
Permite pular para qualquer posição do arquivo (inclusive além do fim, criando um 'buraco' esparso na próxima escrita) sem ler/escrever dados. Não se aplica a pipes e a maioria dos sockets, que não são posicionáveis.
Header:
unistd.hman 2Assinatura
off_t lseek(int fd, off_t offset, int whence);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | int | Descritor de arquivo. |
| offset | off_t | Deslocamento, interpretado conforme `whence`. |
| whence | int | SEEK_SET, SEEK_CUR, SEEK_END, ou SEEK_DATA/SEEK_HOLE. |
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 | offsetoff_t |
| rdx | argumento 3 | whenceint |
Valor de retorno
A nova posição (em bytes, desde o início do arquivo) em sucesso; (off_t) -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EINVAL(22)
- Argumento inválido.
- ENXIO(6)
- Dispositivo ou endereço inexistente.
- ESPIPE(29)
- Seek inválido (descritor não posicionável, ex.: pipe).
- EOVERFLOW(75)
- Valor grande demais para o tipo de dado de destino.