2

В системах Linux это не вызывает никаких проблем: exe загружается в ram при запуске. Затем файл может исчезнуть, быть перемещенным и т.д. Без какого-либо взаимодействия.

Похоже, что это не так в Windows. Есть ли причина для такого поведения?

1 ответ1

7

Из блокирования исполняемых файлов StackOverflow : Windows делает, Linux нет.Зачем?:

Из ответа Орен Шемеш:

В Linux есть механизм подсчета ссылок, поэтому вы можете удалить файл во время его выполнения, и он будет существовать до тех пор, пока какой-то процесс (который ранее его открыл) имеет открытый дескриптор для него. Запись каталога для файла удаляется при его удалении, поэтому его больше нельзя открыть, но процессы, уже использующие этот файл, все еще могут его использовать. Как только все процессы, использующие этот файл, завершаются, файл удаляется автоматически.

Windows не имеет этой возможности, поэтому она вынуждена блокировать файл, пока не завершатся все процессы, выполняющиеся из него.

Из ответа Перри Лорье:

Linux блокирует файлы. Если вы попытаетесь перезаписать исполняемый файл, вы получите "ETXTBUSY" (текстовый файл занят). Однако вы можете удалить файл, и ядро удалит файл при удалении последней ссылки на него. (Если машина не была полностью отключена, эти файлы являются причиной сообщений "У удаленного inode было нулевое время d" при проверке файловой системы, они не были полностью удалены, потому что запущенный процесс имел ссылку на них, а теперь они есть.)

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