Alternativ lassen sich in diesem Fall Transaktionen auf Anwendungsebene implementieren, wenn du dir eine weitere Datei als Journal mit den zu löschenden Dateinamen anlegst und verwaltest. Das komplizierteste dabei ist, die Änderungen an den richtigen Stellen zu
flushen oder unbuffered I/O
(siehe vorherigen Link) zu benutzen.
Wenn du dein Programm nach einem Absturz startest und das Journal ist nicht leer, dann wiederholst du zuallererst alle Löschaufträge, die sich noch im Journal befinden.