Voltar à lista
Linux x86_64Sistema de arquivos#265

linkat

Como link, mas resolve origem e destino relativos a (possivelmente diferentes) descritores de diretório.

Descrição

Parte da família *at(); com AT_EMPTY_PATH e um descritor de arquivo aberto como `oldpath`, permite criar um link para um arquivo já sem nome (ex.: aberto com O_TMPFILE), 'materializando-o' no sistema de arquivos.

man 2Desde o kernel 2.6.16

Assinatura

int linkat(
    int olddirfd,
    const char * oldpath,
    int newdirfd,
    const char * newpath,
    int flags
);

Parâmetros

ParâmetroTipoDescrição
olddirfdintDescritor do diretório base da origem, ou AT_FDCWD.
oldpathconst char *Caminho de origem.
newdirfdintDescritor do diretório base do destino, ou AT_FDCWD.
newpathconst char *Novo caminho a criar.
flagsintAT_EMPTY_PATH, AT_SYMLINK_FOLLOW.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1olddirfdint
rsiargumento 2oldpathconst char *
rdxargumento 3newdirfdint
r10argumento 4newpathconst char *
r8argumento 5flagsint

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.
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.

Relacionadas