hello,lists,
I open a file and obtained a filehandle.then I fork a child and access this
file in child (via the duplicate filehandle from parent).If both parent and
child are writting to the file at the same time,the things should become
terrible.So I should use the 'flock' call to lock the filehandle.But I find
just in the same process,the flock is effective.In other words,when I flock the
filehandle in child,the effect of 'flock' mean nothing to parent,and parent can
still write to the file. the test code is shown as below:
use strict;
use warnings;
use Fcntl ':flock';
open (HDW,">>","tst.txt") or die "$!";
select HDW;$|=1;select STDOUT;
my $child = fork();
die "fork $!" unless defined $child;
if ($child == 0)
{
flock (HDW,LOCK_EX);
for (my $i=0;;$i++) {
print HDW "test in child $$ $i\n";
sleep 1;
}
flock (HDW,LOCK_UN);
#close HDW;
exit 0;
}
for (my $i=0;$i<50;$i++){
print HDW "test in parent $$ $i\n" or die $!;
sleep 1;
}
close HDW;
when this code run,both parent and child can write to the same file,and maybe
at the same time.
How can I resolve this problem?thanks.
--
Jeff Pang
NetEase AntiSpam Team
http://corp.netease.com
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>