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

  • Чтобы не сгинуло в Фейсбуке

    Иван Давыдов Каждое утро ангелы строятся на поверку. Их доспехи из золота, звезды слепнут от их красы. А у моего заступника там, сверху – Только…

  • (no subject)

    Кошечка свила себе гнездо в куче уличной одежды на стуле. Вызывает ассоциацию с греческим мифом про голубку, ставшую символом мира после того, как…

  • Осторожно, секта!

    Если у вашего ребёнка исцарапаны руки, в том числе поперёк вен; Если в 4:20 он или вы, не просыпаясь, встаёте, не приходя в сознание чистите лоток и…

  • 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