Linux x86_64Sistema de arquivos#89
readlink
Lê o caminho de destino armazenado em um link simbólico.
Descrição
Diferente de `open`+`read`, não segue o link — lê o conteúdo do link em si.
Header:
unistd.hman 2Atenção
Diferente da maioria das APIs de string do Unix, não adiciona terminador nulo — o chamador deve usar o valor de retorno para saber onde o caminho termina.
Assinatura
ssize_t readlink(const char * pathname, char * buf, size_t bufsiz);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| pathname | const char * | Caminho do link simbólico. |
| buf | char * | Buffer de destino para o caminho alvo. |
| bufsiz | size_t | Tamanho de `buf`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | pathnameconst char * |
| rsi | argumento 2 | bufchar * |
| rdx | argumento 3 | bufsizsize_t |
Valor de retorno
Número de bytes escritos em `buf` (sem terminador nulo) em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EACCES(13)
- Permissão negada.
- EINVAL(22)
- Argumento inválido.
- ENOENT(2)
- Arquivo ou diretório inexistente.
- ENOTDIR(20)
- Não é um diretório.