Status der Datei, die gelöscht wird, während ein anderer Prozess darauf schreibt


0

Ich habe einen WAMP, der (sehr oft) die Protokolle in eine Datei schreibt.

Wenn ich diese Datei lösche (mit Verschiebung + Löschen ) es verschwindet für einen Moment, dann erscheint es zurück (mit der gleichen Größe, nicht 0).

  • Wenn ich versuche, es mit zu öffnen Notizblock es sagt:

    Zugriff verweigert

  • Wenn ich versuche, es mit zu öffnen Notepad ++ es sagt:

    Datei existiert nicht. Erstelle es?

    • Wenn ich "Ja" wähle, wird Folgendes angezeigt:

      Datei kann nicht erstellt werden " Datei ".

  • Wenn ich davon renne cmd :

    type file
    

    es zeigt:

    Der Zugriff wird verweigert.

  • Wenn ich von cmd aus laufe:

    dir /Q
    

    es zeigt ... für diese Datei, während es für eine normale Datei zeigt BUILTIN\Administrators (woher /Q meint Display the owner of the file. ).

  • Wenn ich den Server neu starte, wird die Datei gelöscht.

Fragen:

  1. Wie ist der Status dieser Datei? (Es muss einen besonderen Status haben, wenn der Versuch, darauf zuzugreifen, ein anderes Verhalten hat.)
  2. Wie kann ich diesen Status in einen konsistenten Status ändern? (um lesbar zu sein)
  3. Wie geht das? löschen in diesem Fall arbeiten? Wird es in eine Warteschlange gestellt und erst ausgeführt, nachdem die Datei "freigegeben" wurde?

Hinweis: Dies kann vom Dateisystem und / oder der verwendeten Windows-Version abhängen.
Run CMD

2
Es gibt ein offenes Handle für die Datei, das sie sperrt. So verhindert das OS / FS, dass mehrere Prozesse gleichzeitig in dieselbe Datei schreiben. Wenn WAMP ordnungsgemäß heruntergefahren wird, sollten alle Griffe freigegeben werden. Das manuelle Beenden des Griffs kann erfolgen, kann jedoch zu unerwünschtem Verhalten oder einem Absturz führen.
Linef4ult
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.