Атомарные операции с файлами
Mar. 14th, 2020 01:11 pmА вот как надежно выполнить операцию замены содержимого файла атомарно? Я не парился особо: делал unlink старого файла, а потом создавал новый, но пару раз при получении FITS-файлов на 0.5-метровом телескопе обнаружил "пропажу" части данных из шапки (похоже, файл был открыт в тот момент, когда только заполнялся демоном).
В интернетах пишут, что нужно сначала создать временный файл, а затем при помощи rename подменить содержимое оригинального. Насколько это надежно? В манах пишут, что если в момент выполнения rename другой процесс обратится к файлу, "пропажи" он не заметит. А вот если он его откроет "чуть-чуть заранее" и успеет часть считать? Останется ли файл для него нетронутым, как при unlink, или же превратится в кашу, как при "перезаписи наживую"?
В интернетах пишут, что нужно сначала создать временный файл, а затем при помощи rename подменить содержимое оригинального. Насколько это надежно? В манах пишут, что если в момент выполнения rename другой процесс обратится к файлу, "пропажи" он не заметит. А вот если он его откроет "чуть-чуть заранее" и успеет часть считать? Останется ли файл для него нетронутым, как при unlink, или же превратится в кашу, как при "перезаписи наживую"?