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

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

1 ответ1

6

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .