Почему Windows блокирует файлы во время установки, а Linux не блокирует файлы?

Почему Windows блокирует файлы во время установки, а Linux не блокирует файлы?

Я заметил, что когда файл запускается в Windows (.exe или .dll) для установки, он блокируется и не может быть изменен, тогда как Linux позволяет пользователю изменять его путем удаления/редактирования.

Почему Windows блокируется, а Linux нет? Есть ли преимущество в блокировке?

решение1

Обе операционные системы блокируют данные файла. Любая попытка изменить исполняемый файл во время его работы или библиотеку во время ее отображения приведет к ошибке «текстовый файл занят» в Linux.

$ gcc foo.c -o f
$ ./f &
[1] 2017
$ ls > f
bash: f: Text file busy

Разница только в том,чтозаблокирован. Windows блокирует запись каталога, Linux блокирует данные файла. Это различие существует по историческим причинам — давным-давно Windows рассматривала записи каталога и данные файла как по сути эквивалентные, и для сохранения совместимости многие последствия этой конструкции были сохранены. Linux всегда рассматривал записи каталога как указатель на данные файла.

Связанный контент