Определение процесса блокировки файла
У меня есть unit test, который отлично работает локально, но при загрузке на сервер сборки TeamCity завершается сбой: "Процесс не может получить доступ к файлу, потому что он используется другим процессом".
- Прежде чем я что-нибудь сделаю в тесте
Я проверяю установку, если файл
существует, и если да, попробуйте удалить его.
Это происходит с той же ошибкой
как указано выше
- При использовании
файл, я закрываю
распоряжаться им, которые, я считаю, должны
избавиться от любых ресурсов.
Итак, у меня есть несколько запросов
- У кого-то были подобные проблемы и удалось обойти их.
- Как узнать, что
процесс эгоистично заблокировал
файл!!!
Приветствия
Ответы
Ответ 1
Sysinternals FileMon содержит некоторую информацию (прокрутка вниз) о том, как они это сделали в более старых версиях Windows.
Process monitor - это их последняя версия, но она не дает много подсказок о том, как они это делают. Однако есть некоторые статьи базы знаний, которые должны привести вас к этой информации.
-Adam
Ответ 2
Sysinternals handle.exe - это первый шаг. Или используйте Process Explorer Find Handle or DLL
. Это всегда безопаснее убить процесс, чем закрыть дескриптор.
Программно, это вопрос написания драйвера ядра, который читает таблицу дескрипторов Windows.
Ответ 3
ProcessMon (для поиска) и Unlocker (по крайней мере, для разблокировки) также полезны.