[Cascavel-pm] Bloquear arquivo
Luis Motta Campos
monsieur_champs em yahoo.com.br
Quarta Maio 17 08:11:37 PDT 2006
Alceu R. de Freitas Jr. wrote:
> O flock() do Perl é consultivo: ou seja, só funciona
> se o programa ao tentar utilizar o arquivo consultar
> se existe um bloqueio e for programado para respeitar
> esse bloqueio.
>
> Sistemas UNIX em geral, incluindo o Linux, não
> oferecem lock mandatório, como os sistemas
> operacionais da Microsoft fazem, por exemplo. Existem
> algumas vantagens e desvantagens nisso.
>
> Se o acesso ao arquivo for feito exclusivamente por
> programas em Perl, isso ficará transparente e
> funcionará. Do contrário, poderão existir problemas.
> Perl vai tentar usar a função de locking que estiver
> disponível na biblioteca C do sistema operacional e
> isso varia de flock(), lockf() e fctnl(). Eu realmente
> não sei qual o critério de escolha (se é que existe
> um).
É uma lista ordenada de opções, apenas.
Está quase na sua ordem: flock(), fctnl() e lockf().
Mesmo que a implementação utilizada pelo locking do perl variar em
baixo nível, sempre usamos a mesma, para uma dada instalação. Assim,
exceto na hipótese remota de você ter dois Perls em produção na mesma
máquina compilados com bibliotecas de file locking diferentes, eu acho
que é perfeitamente seguro usar esta opção.
> Uma alternativa razoável, se os fontes estiverem
> disponíveis, é utilizar a mesma função em C do
> programa que irá acessar o arquivo, usando XS para
> integrar isso no código Perl. Tem um exemplo no CPAN
> que faz exatamente isso: Passwd::Linux
> (http://search.cpan.org/~eestabroo/Passwd-Linux-0.70/Linux.pm).
Putz... cê tem mesmo de estar com muita vontade de aprender a usar XS
para tentar fazer assim... ;-) claro, fucnionar, funciona... o meu
problema é saber se vale à pena... não era mais simples implementar tudo
em perl??
Putamplexos!
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Motta Campos is Software Engineer, Oracle OCP/DBA, Un*x
Sysadmin, Member of {Lisbon,São Paulo,Cascavel,Brasil,London}
Perl Mongers and Perl Fanatic Evangelist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mais detalhes sobre a lista de discussão Cascavel-pm