Linux x86_64Sistema de arquivos#78Depreciada
getdents
Lê entradas de diretório de um descritor aberto sobre um diretório.
Descrição
Interface de baixo nível por trás de `readdir(3)`; retorna múltiplas entradas por chamada em um buffer compacto de tamanho variável.
man 2
Depreciada
Prefira `getdents64` (syscall 217): usa um formato de registro com inode de 64 bits, evitando truncamento em sistemas de arquivos com inodes grandes.
Assinatura
int getdents(unsigned int fd, struct linux_dirent * dirp, unsigned int count);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | unsigned int | Descritor aberto sobre um diretório. |
| dirp | struct linux_dirent * | Buffer de saída para as entradas. |
| count | unsigned int | Tamanho de `dirp`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fdunsigned int |
| rsi | argumento 2 | dirpstruct linux_dirent * |
| rdx | argumento 3 | countunsigned int |
Valor de retorno
Número de bytes lidos (0 indica fim do diretório) em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- 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).
- EINVAL(22)
- Argumento inválido.
- ENOENT(2)
- Arquivo ou diretório inexistente.
- ENOTDIR(20)
- Não é um diretório.