Seite 1 von 3

Datei sperren?

Verfasst: 18.04.2006 15:57
von AND51
Hallo!

Wie kann man eine Datei sperren, sodass kein anderer Prozess darauf zugreifen kann?
In CGI/Perl geht das mit Flock(), sofern das einer kennt.

MfG, AND51

Verfasst: 18.04.2006 16:08
von uweb
Das ist zwar kein 100%iger Schutz aber vielleicht reicht dir ja das Schreibgeschützt-Attribut ?

http://www.purebasic.fr/german/viewtopic.php?t=3299

2. Möglichkeit geht nur während Dein Programm läuft : Datei öffnen.

natürlich kann man auch tricksen.

z.B. über einen HardLink entweder auf eine leere Dummydatei oder eben die eigentliche Datendatei zeigen.
http://www.purebasic.fr/german/viewtopic.php?t=6276

Verfasst: 18.04.2006 16:17
von AND51
Ja, ich meine, während mein Programm läuft, möchte ich eine ini-Datei sperren, sodass kein anderes Programm dauarf zugreifen kann.

Fals jemand noch einen Tipp hat, kann er ja posten, aber ich glaube, ich löse das eigentliche Problem doch anders. Trotzdem danke!

Verfasst: 18.04.2006 16:22
von uweb
Hast Du schon so schnell alle drei Varianten ausprobiert oder habe ich die Frage doch falsch verstanden ?

Welche andere Lösung hast Du ?

Verfasst: 18.04.2006 16:27
von Karl
Er möchte wohl exklusiven Zugriff, damit ihm kein anderer was dazwischen schreibt.

In Visual Basic ist das kein Problem.



Gruß Karl

Verfasst: 18.04.2006 16:40
von Zaphod
Es sollte eigentlich genügen, die datei einfach geöffnet zu lassen.

Verfasst: 18.04.2006 16:42
von Karl
@Zaphod: Probiert und negativ. Er sperrt wohl nur beim Schreiben sprich schließen.

Gruß Karl

Verfasst: 18.04.2006 16:44
von uweb
Ja, das war ja mein 2. Vorschlag.

Eben so :

Code: Alles auswählen

If OpenWindow(0, 100, 100, 300, 100, "Test", #PB_Window_SystemMenu)
  If OpenFile(0, "server.ini")
  
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  
    CloseFile(0)
  EndIf
EndIf
Aber, vielleicht hat er ja noch eine bessere Methode mit anderen Vorteilen.


edit :
Er sperrt wohl nur beim Schreiben sprich schließen.
Vielleicht bin ich heute schwer von Begriff aber das habe ich nicht verstanden. Bei mir wird gesperrt.

Verfasst: 18.04.2006 17:02
von AND51
Im Grunde hat Karl Recht:
> Er möchte wohl exklusiven Zugriff, damit ihm kein anderer was dazwischen schreibt.

Die Datei einfach geöfnet zu lassen, damit sie nicht gelöscht wird, das ist mir klar, dass man dann einfah die Datei geöffnet lassen kann.

Aber ich will sowas Ähnliches wie Flock() von CGI/Perl, damit kann man einstelen, dass andere Prozesse solange nicht drauf zugreifen dürfen, nur lesen dürfen etc. bis man mit flock() die Datei wieder freigibt oder das eigene Programm beendet.

Verfasst: 18.04.2006 17:05
von uweb
Ich muß mich wiederholen :
:oops:
Vielleicht bin ich heute schwer von Begriff aber das habe ich nicht verstanden.
Wo ist der Unterschied ?