Voltar à lista
Linux x86_64Arquivos & E/S#72

fcntl

Executa operações de controle sobre um descritor de arquivo: duplicação, flags, locks, e mais.

Descrição

Assim como `ioctl` para dispositivos, `fcntl` é o ponto de entrada multiplexado para operações gerais sobre descritores de arquivo — obter/definir flags (O_NONBLOCK, FD_CLOEXEC), duplicar descritores, gerenciar locks de registro de arquivo (F_SETLK), e configurar leases e notificações.

Header: fcntl.hman 2

Assinatura

int fcntl(int fd, int cmd, ... arg);

Parâmetros

ParâmetroTipoDescrição
fdintDescritor de arquivo.
cmdintComando: F_DUPFD, F_GETFL, F_SETFL, F_GETLK, F_SETLK, F_SETLK, etc.
arg...Argumento opcional cujo tipo depende de `cmd` (inteiro ou ponteiro para struct).

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdint
rsiargumento 2cmdint
rdxargumento 3arg...

Valor de retorno

Depende de `cmd`; em geral um valor não negativo em sucesso, -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EBADF(9)
Descritor de arquivo inválido.
EDEADLK(35)
Deadlock de recurso evitado (também EDEADLOCK).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
EMFILE(24)
Limite de arquivos abertos do processo atingido.

Relacionadas