Voltar à lista
Linux x86_64Arquivos & E/S#292

dup3

Como dup2, mas permite aplicar O_CLOEXEC atomicamente no novo descritor e proíbe oldfd == newfd.

Descrição

Evita a janela de corrida entre `dup2` e uma chamada `fcntl(F_SETFD, FD_CLOEXEC)` subsequente.

man 2Desde o kernel 2.6.27

Assinatura

int dup3(int oldfd, int newfd, int flags);

Parâmetros

ParâmetroTipoDescrição
oldfdintDescritor a duplicar.
newfdintNúmero de descritor de destino.
flagsintO_CLOEXEC.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1oldfdint
rsiargumento 2newfdint
rdxargumento 3flagsint

Valor de retorno

`newfd` em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EBADF(9)
Descritor de arquivo inválido.
EBUSY(16)
Dispositivo ou recurso ocupado.
EINVAL(22)
Argumento inválido.
EMFILE(24)
Limite de arquivos abertos do processo atingido.

Relacionadas