Dmitry Belyavsky (beldmit) wrote,
Dmitry Belyavsky
beldmit

Category:

Вспомнить всё: lock file

Освежил в памяти, как нынче заблокировать доступ к файлу на уровне C API.

Linux (и, видимо, прочие юниксы): flock работает всегда, lockf - для файла, открытого на запись. fcntl, наверное, тоже.

В Windows это не портируется, там надо звать Windows API, которое несовместимо в этом месте с OpenSSL BIO. И из виндового HANDLE получить дескриптор файла как-то можно, но это танцы с бубном.

На практике интересен ещё атомарный rename. В Unix-подобных системах, видимо, он действительно атомарный, попутно нашёлся эпический тред про то, как эту атомарность в MacOS 10+ чинили 3 года. В Windows есть ReplaceFile со товарищи, тоже со своими особенностями, и помеченная как deprecated функция для работы через транзакционный механизм NTFS.

Как это всё работает на NFS, не знает примерно никто.

Видимо, наиболее простое по программированию решение всех этих задач - внешнее по отношению к файловой системе, типа именованных мьютексов.

This entry was originally posted at http://beldmit.dreamwidth.org/827686.html. Your comment? (comment count unavailable comments)
Tags: компьютерное, программирование
Subscribe

  • OpenSSL 3.0

    В фейсбук написал, а сюда — нет. Исправляюсь. Собственно, вышла новая версия. Изменений масса. FIPS-сертификация для России не очень актуальна, а…

  • Rust Cryptography

    Проект по реализации криптографии на rust. Теоретически это даёт спасение от всяких CVE по записи в никуда и чтению из ниоткуда (примерно треть всех…

  • Welcome to Hogwards, now as postdoc

    Официально причислен к Техническому комитету OpenSSL. До того два года был в коммиттерах, а ещё до того 14 лет просто так ковырялся в коде. This…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments