[Cascavel-pm] Bloquear arquivo

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quarta Maio 17 07:50:53 PDT 2006


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 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).

[]'s
Alceu

--- Solli Honorio <shonorio em gmail.com> escreveu:

> Eu acho que existe alguma limitação nisto. O Alceu
> já colocou esta questão,
> e me parece que o Linux não tem suporte a lock de
> arquivo (pelo menos em
> forma nativa).
> 
> Alceu, você poderia dar a tua contribuição neste
> assunto ?
> 
> Solli M. Honório
> 
> On 5/17/06, Igor Sutton Lopes <igor em izut.com> wrote:
> >
> > Bom dia Steven,
> >
> > On Wed, 2006-05-17 at 10:13 +0100, Brinde Storm
> -Steven Koch wrote:
> >
> > > Tenho que abrir um arquivo e escreve-lo, mas
> preciso bloquea-lo para
> > > que ninguem possa escreve-lo enquando outro faz
> isso.
> >
> > Você pode utilizar a função Perl flock:
> >
> > http://perldoc.perl.org/functions/flock.html
> >
> > --
> > Igor Sutton Lopes <igor em izut.com>



	



	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



Mais detalhes sobre a lista de discussão Cascavel-pm