Hi Jörk,
Meine Idee hierzu wäre, zuerst eine Datei mit der Prozess-ID anzulegen.
die Idee ist ziemlich gut. Das Problem hatte ich schon gesehen, nur bisher als derartig unwahrscheinlich angesehen, daß ich es in Kauf genommen habe. Jetzt fehlt mir noch die Variable/der Befehl, womit ich die Prozess-ID herausfinden kann :-)
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?
Cheatah