[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