Linux x86_64Sistema de arquivos#82
rename
Renomeia (ou move) um arquivo ou diretório.
Descrição
Se origem e destino estão no mesmo sistema de arquivos, a operação é atômica — nunca há um estado intermediário em que o arquivo 'não existe em nenhum dos dois nomes'.
Header:
stdio.hman 2Nota
EXDEV indica que origem e destino estão em sistemas de arquivos diferentes — nesse caso é preciso copiar os dados e remover o original manualmente; não há como tornar isso atômico entre sistemas de arquivos distintos.
Assinatura
int rename(const char * oldpath, const char * newpath);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| oldpath | const char * | Caminho atual. |
| newpath | const char * | Novo caminho. |
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.
- EBUSY(16)
- Dispositivo ou recurso ocupado.
- EEXIST(17)
- Arquivo já existe.
- ENOENT(2)
- Arquivo ou diretório inexistente.
- ENOTDIR(20)
- Não é um diretório.
- ENOTEMPTY(39)
- Diretório não vazio.
- EXDEV(18)
- Link cruzando dispositivos/sistemas de arquivos diferentes.