Voltar à lista
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âmetroTipoDescrição
fdunsigned intDescritor aberto sobre um diretório.
dirpstruct linux_dirent *Buffer de saída para as entradas.
countunsigned intTamanho de `dirp`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdunsigned int
rsiargumento 2dirpstruct linux_dirent *
rdxargumento 3countunsigned 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.

Relacionadas