in reply to Re^2: File lock question
in thread File lock question
... sub do_log { ... sysopen my $fh, $logfile, O_RDWR|O_CREAT or do {...}; my $tmp_file = "${logfile}_tmp"; if (flock $fh, LOCK_EX) { #exclusive lock open my $tmp_fh, '>', "$tmp_file" or do {...}; while (<$fh>) { .. $nr_ofl = $.; my $line = $_; .. print $tmp_fh $line, "\n"; } ... check_nr_of_lines($nr_ofl, $arch_path, $logfile, $fh); ... close $tmp_fh or die "Can't close tmp_file: $!"; move($tmp_file, $logfile); } close $fh or die "Can't close logfile $!"; #unlocks automatic } sub check_nr_of_lines { my ($nr_of_lines, $arch_path, $logfile, $fh) = @_; if ( $nr_of_lines >= max_nr_of_lines_per_logfile ) { eval { mkpath($arch_path) }; if ($@) { ... } my $c = int($nr_of_lines / 2); open my $fh3, '>', "$arch_path/arch_test.log" or do { ... }; seek($fh, 0, 0); while (<$fh>) { print; if ($. <= $c) { print $fh3 $_; last; } print $fh $_; } } return; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: File lock question
by cdarke (Prior) on Nov 08, 2009 at 12:47 UTC |