Здравствуйте, Barbar1an, Вы писали:
B>задача скучная: нужно чтобы при падении процесса, файлы оставались в последнем корректном состоянии B>в общем нужны транзакции
В такой постановке задача не решается. Ну или я не знаю о решении. Вообще говоря, даже Flush(true) не гарантирует что на диске будет именно то, что записано до вызова Flush. А определить, когда же все-таки устройство окончательно приняло изменения файла — в общем случае нет такой возможности. Драйвер файловой системы может получать данные для записи в файл еще спустя много секунд после того, как приложение закрыло файл. Но даже если файл закрыт окончательно (не только процессом, но и системой), то устройство еще вольно перетряхивать его данные в кэше, ожидать записи других файлов, что бы оптимально разместить все в постоянной памяти. При сбое питания в такой момент — данные будут потеряны. Даже если не пытаться защититься от сбоев питания, целостность данных на уровне процесса — вопрос далеко не скучный.
Потому, задачу надо формулировать так: каким образом организовать запись, что бы можно было потом разобраться, где корректная запись, а где — мусор.