Czy w takim przypadku jest zwyczaj otwierać plik tylko raz?Czy powinienem zachować plik otwarty, czy powinienem często otwierać i zamykać?
#!/usr/bin/env perl
use warnings;
use 5.012;
use autodie;
my $file = 'my_file';
open my $fh, '>>', $file;
say $fh "Begin";
close $fh;
$SIG{INT} = sub {
open my $fh, '>>', $file;
say $fh "End";
close $fh;
exit
};
my $result;
while (1) {
$result++;
# ...
# ...
# ...
open my $fh, '>>', $file;
say $fh $result;
close $fh;
sleep 3;
}
Co więcej, na ile chcesz się napić podczas otwierania i zamykania - nie są to operacje bezpłatne. –
Zastanowiłem się nad uwzględnieniem kwestii współbieżności i blokowania w mojej odpowiedzi, ale uznałem, że było to zbyt odbiegające od jego pytania. Jednak możliwe jest, że łączy się on z zamknięciem i zalaniem. Ponieważ prawidłowo wskazuje się na obsługę spójności danych w obliczu możliwego współbieżnego dostępu, należy użyć blokowania, a w celu zminimalizowania rywalizacji o blokadę i ryzyka niespójności pliku/bufora należy wyraźnie opróżnić po operacji zapisu. –
@ S.Lott - to jest pod ogólnym nagłówkiem "odpadów zasobów systemowych", ale trochę się rozwiną :) – DVK