Voltar à lista
Linux x86_64Namespaces#308

setns

Reassocia a thread chamadora a um namespace existente, referenciado por um descritor de arquivo.

Descrição

Complementa `unshare`: em vez de criar um namespace novo, entra em um já existente (tipicamente obtido abrindo um arquivo em `/proc/[pid]/ns/*`). É assim que utilitários como `nsenter(1)` executam um processo dentro do namespace de rede/mount/etc. de outro processo já em execução.

Header: sched.hman 2Desde o kernel 3.0

Assinatura

int setns(int fd, int nstype);

Parâmetros

ParâmetroTipoDescrição
fdintDescritor de arquivo referenciando o namespace alvo (ex.: aberto a partir de /proc/[pid]/ns/net).
nstypeint0 para aceitar qualquer tipo, ou um CLONE_NEW* específico para exigir que `fd` seja daquele tipo.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdint
rsiargumento 2nstypeint

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EBADF(9)
Descritor de arquivo inválido.
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
EPERM(1)
Operação não permitida (falta de privilégio).

Relacionadas

Mesma categoria