Поиск

Атомарные операции с файлами


А вот как надежно выполнить операцию замены содержимого файла атомарно? Я не парился особо: делал unlink старого файла, а потом создавал новый, но пару раз при получении FITS-файлов на 0.5-метровом телескопе обнаружил «пропажу» части данных из шапки (похоже, файл был открыт в тот момент, когда только заполнялся демоном).
В интернетах пишут, что нужно сначала создать временный файл, а затем при помощи rename подменить содержимое оригинального. Насколько это надежно? В манах пишут, что если в момент выполнения rename другой процесс обратится к файлу, «пропажи» он не заметит. А вот если он его откроет «чуть-чуть заранее» и успеет часть считать? Останется ли файл для него нетронутым, как при unlink, или же превратится в кашу, как при «перезаписи наживую»? eddy_em.livejournal.com

Добавить комментарий