Nightmare1
@Nightmare1
Программист

Усиленно удалить файл в windows, возможно ли с помощью пары функций?

В общем в линуксе работает функция unlink(path); для файлов которые заблокированы системой. В windows та же функция _unlink(path); для заблокированных файлов не работает. Существует ли простой вариант для разблокировки используемых файлов системой, прибегая к одному / двум вызовам стандартных winapi методов?*
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg Куратор тега Linux
Любые ответы на любые вопросы
И да и нет. В линуксе удаление открытого файла возможно в виду архитектуры API драйвера файловой системы.

В форточке же, это возможно сделать, только прибив процесс, который держит файл. Ну а это делается действительно вызовом некоторого количества функций WinApi.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Вы не так понимаете, как это работает.
В линукс файловая система использует структуру iNode в качестве хранения метаинформации о файлах. И когда вы открываете файл, по имени файла ищется iNode файловый дескриптор привязывается и лочит уже iNode. При этом имя файла на диске можно свободно удалять (а сами данные файла при этом удалятся позже, когда процесс который открыл файловый дескриптор его освободит).

В виндовой файловой системе метаинформация и имя файла хранятся вместе, и поэтому открытый файловый дескриптор держит имя, и его нельзя удалить.

Никакая недокументируемая функция это поведение не изменит. Пока процесс, который залочил файл в винде его не разлочит - ничего не получится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы