Jörk Behrends: Directory lesen mit Perl

Beitrag lesen

Hi!

Was hälst Du von folgender Vorgehensweise:

LABEL:
my $flockcount=0;
while (-e $flockdatei && $flockcount < 5) { $flockcount++; sleep(1); }
open(FLOCK,">$flockdatei");
print FLOCK $prozess-id;
close(FLOCK);

Hier könnte sicherheitshalber noch eine kurze Pause eingelegt werden, vor allem folgt jetzt der Test:

open(FLOCK,$flockdatei);
my $pid=<FLOCK>;
close(FLOCK);
if ($pid != $prozess-id) { goto LABEL; }

Schreibzugriff gewährt :-)

Ich bin jetzt nicht ganz sicher, ob die goto-Geschichte so ganz korrekt ist. Abgesehen davon (und davon, daß ich ein paar Variablen voraussetze), würde dies Deiner Meinung nach sicher sein?

Eigentlich wollte ich mit der Prozess-ID Sache den Aufwand DRASTISCH reduzieren. Deine Lösung nutzt aber zumindest immer noch flock ...

Ich dachte eher an so etwas wie:

open(NUMMER, "$$.dummy");
print NUMMER, 'blablabla';
close NUMMER;

$zahl = 42;
until (rename("$$.dummy", "$zahl.log")) {$zahl ++}

Bin mir grad' aber nicht sicher, ob rename wirklich so reagiert, wie wir das brauchen ...

ciao,
   Jörk