Linux x86_64Sistema de arquivos#86
link
Cria um novo hard link, fazendo dois nomes de caminho apontarem para o mesmo inode.
Descrição
Hard links não podem cruzar sistemas de arquivos (diferente de symlinks) e, tradicionalmente, não podem apontar para diretórios.
Header:
unistd.hman 2Assinatura
int link(const char * oldpath, const char * newpath);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| oldpath | const char * | Caminho existente. |
| newpath | const char * | Novo caminho a criar, apontando para o mesmo inode. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | oldpathconst char * |
| rsi | argumento 2 | newpathconst char * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EACCES(13)
- Permissão negada.
- EEXIST(17)
- Arquivo já existe.
- EMLINK(31)
- Excesso de links (hard links).
- ENOENT(2)
- Arquivo ou diretório inexistente.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- EXDEV(18)
- Link cruzando dispositivos/sistemas de arquivos diferentes.