Voltar à lista
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 2

Nota

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âmetroTipoDescrição
oldpathconst char *Caminho atual.
newpathconst char *Novo caminho.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1oldpathconst char *
rsiargumento 2newpathconst 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.

Relacionadas