Linux x86_64Arquivos & E/S#73
flock
Aplica ou remove um lock consultivo (advisory) sobre um arquivo inteiro.
Descrição
Lock mais simples que os locks de registro do `fcntl`: opera sobre a file description inteira (não em intervalos de bytes) e é 'consultivo' — processos que não checam explicitamente o lock podem ignorá-lo.
Header:
sys/file.hman 2Assinatura
int flock(int fd, int operation);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | int | Descritor de arquivo a travar. |
| operation | int | LOCK_SH, LOCK_EX ou LOCK_UN, opcionalmente com LOCK_NB. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fdint |
| rsi | argumento 2 | operationint |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EAGAIN(11)
- Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
- EBADF(9)
- Descritor de arquivo inválido.
- EINTR(4)
- Chamada interrompida por um sinal.
- EINVAL(22)
- Argumento inválido.
- ENOLCK(37)
- Sem locks disponíveis.