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

  • Немного лытдыбра

    Съездил в Прагу. Надо было отправить Галю в Москву закрыть программу 10 класса. Одну. Очень нервничал, что завернут, но девица благополучно доехала и…

  • Пасхальные каникулы

    В четверг выпил местного зелёного пива. Такой вот предпасхальный специалитет в Зелёный Четверг. Кому интересно про пасхальные традиции — в чешскую…

  • Про то, как я учу чешский

    Эпиграф. Японец хвастается: — Я много лет уцил русский язык! Тысяцу слов уцил-уцил! Две тысяци слов уцил-уцил! Все они у меня тут (стучит себя по…

  • 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