Ich arbeite an einem Kontingent-Manager in C/C++ implementiert unter OS X, die die maximale Größe eines bestimmten Ordners begrenzen. In meinem Projekt gibt es generische Thread-Worker, die entweder neue Daten in den Ordner schreiben oder Daten vom Ordner auf den Server verschieben.Warte auf das Entfernen von Dateien nach dem Schließen
Auf diese Weise kann eine Löschaufgabe manchmal eine Datei löschen, die gerade von einem anderen Thread auf die Festplatte geschrieben wird.
kann ich irgendwie verhindern, dass die Datei während des Schreibvorgangs entfernt wird. Ich kann eigene Mechanismen implementieren (mit Flags, Locks, etc ...), aber ich glaube, es sollte Dateisystem-Eigenschaft sein.
Ich habe den folgenden Code versucht, um zu überprüfen, ob das Entfernen fehlschlägt der Datei noch geöffnet ist, aber es tatsächlich erfolgreich ist.
#include <stdio.h>
int main() {
FILE *fp;
fp=fopen("./x", "w");
fprintf(fp, "Testing...\n");
if(remove("./x") != 0)
perror("Error deleting file");
else
puts("File successfully deleted");
return 0;
}
Wie kann ich Datei vor dem Löschen enforce geschlossen?
Dies könnte Sie interessieren [http://stackoverflow.com/questions/230062/whats-the-best-way-to-check-if-a-file-exists-in-c-cross-platform] . – sjsam
Vielleicht können Sie sich [diese SO-Post] (http://stackoverflow.com/questions/5769785/removing-a-file-in-c) und die [man page] (http://linux.die) ansehen .net/man/3/entfernen). – user3078414