Seite 1 von 1

Prüfen, ob Datei bereits von anderem Prozess geöffnet ?

Verfasst: Mittwoch 7. Dezember 2005, 20:23
von snakeseven
Hallo,
wie kann ich prüfen, ob eine gemeinsam genutzte Datei bereits vom anderen Prozess geöffnet wurde und somit gerade busy ist ?
Seven

Re: Prüfen, ob Datei bereits von anderem Prozess geöffnet ?

Verfasst: Mittwoch 7. Dezember 2005, 22:11
von gerold
snakeseven hat geschrieben: wie kann ich prüfen, ob eine gemeinsam genutzte Datei bereits vom anderen Prozess geöffnet wurde und somit gerade busy ist?
Hi Seven!

Die "Try und Error"-Methode dürfte wohl am Einfachsten sein.

lg
Gerold
:-)

Verfasst: Donnerstag 8. Dezember 2005, 01:31
von BlackJack
Das dürfte vom Betriebssystem und Dateisystem abhängen. Ich würde mal auf `os.open()` tippen mit den entsprechenden Flags zum exklusiven Öffnen. Allerdings muss das andere Programm das auch getan haben.

Verfasst: Donnerstag 8. Dezember 2005, 17:05
von Joghurt
Unter Unix löst man das Problem traditionellerweise mit lockfiles. An einem festgelegten Ort wird eine Datei, z.B. /var/lock/myprog.lock angelegt und die eigene Prozessnummer reingeschrieben.

Will nun eine zweite Instanz des Programmes auf die Datei zugreifen, schaut es zuerst nach, ob die Lockdatei /var/lock/myprog.lock existiert. Wenn ja, wird sicherheitshalber nochmal geschaut, ob unter der gespeicherten PID ein Programm läuft, wenn nicht, ist das ursprüngliche Programm abgestürzt oder beendet und das lockfile kann entfernt werden.

Wenn die Datei exisitiert und der Prozess auch, wird nicht auf die Datenbank zugegriffen, da sie im moment gelockt ist.