in reply to Question about flock and printing to file
The OS is Ubuntu 14.04, writing to the local filesystem
open ($fh, '>>', $file_out); $fh->autoflush(1); print $fh "$date;Site;CTR;IP;Temperature\n"; $i = 0; #######################Variables for the ForkManager------------------ +-------------------> my $count1 = 0; my $pm = Parallel::ForkManager->new(50); $pm->run_on_wait( sub { $count1++; }, 1 ); #<---------------------------Variables for the ForkManager############ +#################### foreach my $key_bgtr(sort keys %devices) { foreach my $key_ip (keys %{$devices{$key_bgtr}})# { $i++; $pm->start and next; $out[0]=$date.';'; $out[1]=$devices{$key_bgtr}{$key_ip}.';'; $out[2]=$key_bgtr.';'; $out[3]=$key_ip.';'; for (my $k =2;$k<=3;$k++) { if (!defined $out[$k]) {$out[$k] = './.'} } $ss = Net::SNMP->session(Hostname=> $key_ip, Timeout => 1); $out[4] = $ss->get_request(Varbindlist => [$oid]); $out[4]= $out[4]->{$oid}; if (defined $out[4] && $out[4] !~ /^$|\s/ && $out[4] >=5) { $out[4] = "$out[4]\n"; } else { $error = $ss->error(); if ($error =~ /.*noSuchName.*/) { $out[4]="no ALCplus2e\n"; } else { $out[4]="OFFLINE\n"; } print $log "$key_bgtr: $error \n"; } flock($fh, LOCK_EX) or die "cannnot lock file - $!\n"; print $fh @out; #print $fh $out[0]; #Datum #print $fh $out[1]; #Site ID #print $fh $out[2]; #BGTR/Link ID #print $fh $out[3]; #IP Adresse #print $fh $out[4]; #Temperature flock($fh, LOCK_UN) or die "cannnot unlock file - $!\n"; $ss->close; $pm->finish; } } close $fh;
The output should look like this:
"2015-06-23_16:57;124124124;123123123B;10.80.80.70;43"
But if printed value by value I sometimes get something like this:
"2015-06-23_16:57;2015-06-23_16:57;124124124;123123123B;10.80.80.70;43456456456;457457457B;10.81.81.71;43"
as if 2 forks could print to the fh, regardless of the lock on it
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Question about flock and printing to file
by jeffenstein (Hermit) on Jun 23, 2015 at 17:12 UTC | |
|
Re^2: Question about flock and printing to file
by Anonymous Monk on Jun 23, 2015 at 17:05 UTC |