Voltar à lista
Linux x86_64Processos & threads#435

clone3

Versão moderna e extensível de clone, usando uma struct versionada em vez de uma longa lista de argumentos posicionais.

Descrição

Resolve a limitação de `clone`, cuja lista de argumentos já estava esgotada para novas funcionalidades. `clone3` também pode retornar diretamente um pidfd do novo processo (via CLONE_PIDFD), evitando uma chamada `pidfd_open` separada logo em seguida.

Header: linux/sched.hman 2Desde o kernel 5.3

Assinatura

long clone3(struct clone_args * cl_args, size_t size);

Parâmetros

ParâmetroTipoDescrição
cl_argsstruct clone_args *Estrutura versionada com flags, pilha, TLS, e (opcionalmente) pidfd de saída, entre outros campos.
sizesize_tTamanho de `cl_args`, para extensibilidade futura da struct.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1cl_argsstruct clone_args *
rsiargumento 2sizesize_t

Valor de retorno

No processo pai, o PID (ou pidfd) do filho; 0 no processo filho, em sucesso. -1 no pai em erro, com errno definido.

Códigos de erro (errno)

E2BIG(7)
Lista de argumentos grande demais.
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

Equivalente em Windows Win32