Czy istnieje sposób na zrzucenie bufora do pliku atomowo?Atomowe zapisywanie do pliku na Linuksie
Przez "atomowo" mam na myśli: jeśli na przykład ktoś wypowie mój wniosek podczas pisania, chciałbym mieć plik w stanie przed lub po napisaniu, ale nie w uszkodzonym stanie pośrednim.
Jeśli odpowiedź brzmi "nie", to prawdopodobnie można to zrobić przy użyciu naprawdę małych buforów? Na przykład, czy mogę zrzucić 2 kolejne zmienne int32_t z jednym 8-bajtowym plikiem fwrite (na platformie x64) i upewnić się, że oba te int32 są zrzucone, czy też żadna z nich, ale nie tylko jedna z nich?
Myślę, że trzeba zajrzeć do "sygnałów" unix. Odłamywanie sygnałów pozwoli ci wiedzieć, kiedy twoja aplikacja jest zamykana. Jedyne, czego nie możesz wykryć, to 'kill -9', który usuwa twój program bez wysyłania sygnału. –
Zwykłym obejściem jest praca nad kopią pliku i zamiana ich atomowo na końcu. –
Zgadzam się z @MarcGlisse jedynym gwarantowanym sposobem zapobiegania korupcji jest napisanie nowego pliku i przeniesienie nowego pliku do starego, ponieważ zmiana nazwy jest atomowa. –