Lesen und schreiben Sie in eine Datei, während Sie die Sperre beibehalten

8

Ich mache einen einfachen Seitenladezähler, indem ich den aktuellen Zählerstand in einer Datei ablege. So möchte ich das machen:

  1. Sperren Sie die Datei (Flock)
  2. Liest die aktuelle Anzahl (fread)
  3. Erhöht es (++)
  4. Schreibe neue Anzahl (fwrite)
  5. Datei entsperren / schließen (flock / fclose)

Kann dies ohne Verlust der Sperre geschehen?

Wie ich es verstehe, kann die Datei nicht geschrieben werden, ohne die Sperre zu verlieren. Der einzige Weg, den ich habe, um dies anzugehen, ist, ein Zeichen mit dem "r +" - Modus zu schreiben und dann Zeichen zu zählen.

    
Znarkus 15.03.2010, 22:15
quelle

3 Antworten

19

Wie gesagt, Sie könnten FLock verwenden. Ein einfaches Beispiel wäre:

%Vor%     
Jamescun 15.03.2010, 22:45
quelle
3

Ich glaube, Sie können dies mit flock erreichen. Öffnen Sie einen Zeiger auf Ihre Datei, flock it, lesen Sie die Daten, schreiben Sie die Daten, und schließen Sie dann (schließen automatisch entsperrt).

Ссылка

    
Adam Hopkinson 15.03.2010 22:22
quelle
1

Ja, Sie müssen den Rücklauf vor ftruncate verwenden. Andernfalls wird der alte Inhalt der Datei nur mit Nullen aufgefüllt.

Die Arbeitssequenz ist:

%Vor%     
Informate.it 22.10.2011 22:05
quelle

Tags und Links