Voltar à lista
Linux x86_64Arquivos & E/S#436

close_range

Fecha um intervalo contíguo de descritores de arquivo em uma única chamada.

Descrição

Antes dela, fechar 'todos os descritores exceto stdin/stdout/stderr' (comum ao implementar `posix_spawn`-like e sandboxes) exigia um loop chamando `close` para cada número de descritor possível. Muito mais eficiente e com suporte a CLOSE_RANGE_CLOEXEC para apenas marcar close-on-exec em vez de fechar de fato.

man 2Desde o kernel 5.9

Assinatura

int close_range(unsigned int first, unsigned int last, unsigned int flags);

Parâmetros

ParâmetroTipoDescrição
firstunsigned intPrimeiro descritor do intervalo.
lastunsigned intÚltimo descritor do intervalo (inclusive).
flagsunsigned intCLOSE_RANGE_UNSHARE, CLOSE_RANGE_CLOEXEC.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1firstunsigned int
rsiargumento 2lastunsigned int
rdxargumento 3flagsunsigned int

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.

Relacionadas