[Cascavel-pm] como garantir file lock para outros programas?

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quarta Janeiro 11 04:52:22 PST 2006


Olá monges,

Estive testando file locking contra programas em C e
C++. Os resultados foram os piores possíveis. Eu criei
o script abaixo para obter um lock exclusivo:

-- code --

#!/usr/bin/perl
use strict;
use warnings;
use Fcntl qw(:DEFAULT :flock);

my $sec = 30;

print 'Please type the file that I should lock for
$sec: ';
my $file = <STDIN>;
chomp $file;

sysopen( FH, $file, O_RDWR ) or die "Cannot edit
$file: $!\n";
flock( FH, LOCK_EX ) or die "Cannot lock $file: $!\n";

print 'Ok, holding the file for $sec seconds. I will
not change anythingin the file', "\n";
sleep $sec;

close(FH);

print "Finished\n";

-- code --

Eu testei esse script contra programas como useradd e
smbpasswd (do Samba). Para minha surpresa ambos
puderam alterar os arquivos sem maiores problemas.

Eu chequei a documentação e o Perl pode usar as
funções de C flock, lockf e fcntl para fazer o file
locking, usando a primeira que ele encontrar.

Eu não chequei o código C desses programas que eu
testei mas eu duvido que eles não usem file locking
para evitar problemas com corrupção do arquivo.

Alguém já lidou com esse tipo de problema? É possível
ter alguma segurança nesse sentido com programas
feitos em outras linguagens, mesmo o file locking do
Perl sendo consultivo?

Grato à todos,


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


	



	
		
_______________________________________________________ 
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