NOME¶
flock - aplica ou remove uma trava consultiva em um arquivo aberto
SINOPSE¶
#include <sys/file.h>
int flock(int fd
, int operation
)
DESCRIÇÃO¶
Aplica ou remove uma trava consultiva em um arquivo aberto. O arquivo
especificado por
fd. As opereções válidas
são fornecidas abaixo:
- LOCK_SH
- Trava compartilhada. Mais que um processo pode influênciar
influenciar uma trava compartilhada para um arquivo fornecido em um dado
tempo.
- LOCK_EX
- Trava exclusiva. Somente um processo pode influênciar um trava
exclusiva para um arquivo fornecido em um dado tempo.
- LOCK_UN
- Destrava.
- LOCK_NB
- Não bloqueia quando travado. Pode ser expecificado (por
ou'ing) junto com uma das outra operações.
Um arquivo não pode simultâneamente ter ambos tipos de trava:
compartilhada e exclusiva.
Um arquivo é travado (quer dizer, o inode),
não é o
descritor de arquivos. Assim,
dup(2) e
fork(2) não cria
multiplas instâncias de uma trava.
VALORES RETORNADOS¶
Em caso de sucesso, zero é retornado. Caso contrário, -1 é
retornado, e
errno é selecionado adequadamente.
ERROS¶
- EWOULDBLOCK
- O arquivo esta travado e o sinalizador LOCK_NB foi
selecionado.
DE ACORDO COM¶
4.4BSD (a chamada
flock(2) apareceu primeiramente no BSD 4.2).
NOTAS¶
flock(2) não trava arquivos via NFS. Use
fcntl(2) : que
pode trabalhar via NFS, fornecendo uma versão suficientemente recente
do Linux e um servidor que suporta travamentos de arquivos.
flock(2) e
fcntl(2) tem semânticas diferentes com respeito
para processos ramificados e
dup(2).
VEJA TAMBÉM¶
open(2),
close(2),
dup(2),
execve(2),
fcntl(2),
fork(2),
lockf(3). Além disso
locks.txt e
mandatory.txt em
/usr/src/linux/Documentation.
TRADUZIDO POR LDP-BR em 21/08/2000.¶
André L. Fassone Canova <lonelywolf@blv.com.br>
(tradução) xxxxxxxxxxxxxxxxxxxxxxxxx <xxx@xxxxxx.xxx.xx>
(revisão)