gul_tech (gul_tech) wrote,
gul_tech
gul_tech

Атомарное создание файла

Почему в позиксе нет функции flink(int fd, const char *name)?
Её отсутствие не даёт возможности атомарного создания файла с нужным содержимым. Чтобы можно было создать inode без имени, наполнить его, и присвоить имя только когда он уже готов для дальнейшей обработки. Нет - нужно временное имя, потом rename(), плюс чистка от временных файлов, образовавшихся при обрыве связи, защита от обработки временных файлов, и так при каждом cp, scp, ftp, wget... :-(

Кстати, правильно ли я понимаю, что tmpfile() реализуется как неатомарная последовательность open()+unlink(), или есть syscall, создающий безымянный inode на указанном разделе?
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments