windows, pliki.

0

Mam problem z zabezpieczeniem zapisu do pliku.
Chce by kilka procesow zapisywalo dane do pliku, ale zeby zachowaly one spojnosc.
Najlepiej by bylo cos w rodzaju flock() jak pod linuxem, ale niestety, LockFile chyba sie nie nadaje.

Nie chce rowniez za kazdym razem otwierac nowego deskryptora bez file_share_write.
Aktualnie rozwazam uzycie eventow, czyli proces ktory chce cos zapisac czeka az event bedzie signaled, a bedzie tylko wtedy jak inny proces skonczy pisac i go ustawi.

To rozwiazanie bedzie dzialac, lecz brakuje mi flocka.... Czy LockFile/Ex jest rozwiazaniem? Czy ma inne zastosowanie?

0

A może muteksy (te z WinApi) albo boost::interprocess? Zajrzyj tu: http://www.boost.org/doc/libs/1_35_0/doc/html/interprocess/synchronization_mechanisms.html - zakładam, że piszesz w C++

LockFile pod Windows robi tylko tyle, ze proces używa pliku na wyłączność (w sensie takim, że żaden inny program nie może go użyć nawet do odczytu)

0

a nie ma jakiegos bardziej eleganckiego sposobu?
chce miec ilestam dskryptorow z pelnym sharem, w kilku procesach, ale zeby tylko jeden mogl pisac.
tzn jak jeden pisze - reszta czeka, czytac moga wszsytkie naraz.

a mutex to jest kolejny obiekt i kolejne ryzyko kolizji nazwy. system powinien miec wlasny mechanizm, jak linux. jest flock, i wszsytko blokuje plik zanim zacznie na nim dzialac.
pod windowsem jak widac musze ZA KAZDYM razem wywolywac CreateFile z flagami FILE_SHARE wg mojego uznania. zal...

0

a nie lepiej zapisywac to w pamieci i pozniej zrzucic na dysk w postaci niezmienionej?

1 użytkowników online, w tym zalogowanych: 0, gości: 1