Linux x86_64Sistema de arquivos#303
name_to_handle_at
Obtém um 'file handle' opaco e persistente para um arquivo, junto com um descritor do sistema de arquivos que o contém.
Descrição
Usada com `open_by_handle_at` para reabrir um arquivo mais tarde (possivelmente após o processo original ter terminado) sem depender de seu caminho — a base do suporte a NFS reexportado e de alguns backends de checkpoint/restore.
man 2Desde o kernel 2.6.39
Nota
Exige CAP_DAC_READ_SEARCH para uso geral sem restrições adicionais de path.
Assinatura
int name_to_handle_at(
int dirfd,
const char * pathname,
struct file_handle * handle,
int * mount_id,
int flags
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| dirfd | int | Descritor do diretório base, ou AT_FDCWD. |
| pathname | const char * | Caminho do arquivo. |
| handle | struct file_handle * | Recebe o file handle opaco. |
| mount_id | int * | Recebe um identificador da montagem que contém o arquivo. |
| flags | int | AT_SYMLINK_FOLLOW, AT_EMPTY_PATH. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | dirfdint |
| rsi | argumento 2 | pathnameconst char * |
| rdx | argumento 3 | handlestruct file_handle * |
| r10 | argumento 4 | mount_idint * |
| r8 | argumento 5 | flagsint |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- EOPNOTSUPP(95)
- Operação não suportada nesse socket/arquivo (também ENOTSUP).
- EOVERFLOW(75)
- Valor grande demais para o tipo de dado de destino.
- EPERM(1)
- Operação não permitida (falta de privilégio).