Seite 1 von 1

Verfasst: Samstag 27. Januar 2007, 18:41
von BlackJack
gerold hat geschrieben:
BlackJack hat geschrieben:Na ganz einfach ein exlusives Lock anfordern.
Hi BlackJack!

Was habe ich mit dieser Codezeile gemacht?

Code: Alles auswählen

fcntl.lockf(f.fileno(), fcntl.LOCK_EX)
Ein exklusives Lock angefordert.
Gibt es eine andere Methode, eine Datei wirklich exclusiv zu sperren?
Nein.

Verfasst: Samstag 27. Januar 2007, 18:48
von sape
@BlackJack:
Jetzt komme ich aber nicht mit (Drehen uns im Kreis):
Einerseits sagst du "Die Locks sind nur freundliche Hinweise. Wenn eine Anwendung nicht fragt ob gelockt ist, dann bringts auch nichts. ", aber andererseits sagst du "Na ganz einfach ein exlusives Lock anfordern.".

:?

Ist das Fazit nun, das es keine 100%ig sichere Methode gibt dafür unter *nixen?

Verfasst: Samstag 27. Januar 2007, 19:07
von BlackJack
sape hat geschrieben:@BlackJack:
Jetzt komme ich aber nicht mit (Drehen uns im Kreis):
Einerseits sagst du "Die Locks sind nur freundliche Hinweise. Wenn eine Anwendung nicht fragt ob gelockt ist, dann bringts auch nichts. ", aber andererseits sagst du "Na ganz einfach ein exlusives Lock anfordern.".
Vielleicht liegt's an mir, aber ich sehe den Kreis nicht. Der erste Satz war die Erklärung warum man mit ``echo`` trotzdem in die Datei schreiben konnte und mit `nano` nicht, und der zweite die Antwort wie man freundlich und *atomar* nach einem (exklusiven) Lock fragt. Zwei verschiedene Fragen, zwei verschiedene Antworten, kein Kreis. IMHO.
Ist das Fazit nun, das es keine 100%ig sichere Methode gibt dafür unter *nixen?
Eine Datei zu sperren wenn sich Programme daran zu schaffen machen, die sich nicht um Sperren kümmern? Das geht nicht. Es müssen schon alle mitspielen, die auf die Datei zugreifen.

Re: In eine Textdatei laufend schreiben

Verfasst: Samstag 27. Januar 2007, 19:34
von gerold
7crystal7 hat geschrieben:ich möchte in ein Logfile schreiben, das einfach eine Textdatei sein soll. Dabei möchte ich Zeile für Zeile anfügen, während des Zugriffs soll die Datei gelockt werden. Wie mache ich sowas?
Hallo Babsi!

Vor lauter Locking haben wir auf die wahrscheinlich einfachste und beste Lösung vergessen.

Es gibt das Modul ``logging``, welches genau dafür gedacht ist und sich um das evt. notwendige Sperren der Datei kümmert.

http://www.python-forum.de/post-40375.html#40375

mfg
Gerold
:-)

Verfasst: Donnerstag 1. Februar 2007, 17:30
von 7crystal7
danke :-)