Определение того, какой процесс имеет блокировку файла - PullRequest
5 голосов
/ 20 ноября 2008

У меня есть модульный тест, который отлично работает локально, но при загрузке на сервер сборки TeamCity происходит сбой с «Процесс не может получить доступ к файлу, поскольку он используется другим процессом.»

  1. Прежде чем что-то делать в тесте Я проверяю в настройке, если файл существует, и если это так, попробуйте удалить его. Это терпит неудачу с той же ошибкой сообщение как указано выше
  2. При записи файл, я закрываю писатель тогда распоряжаться им, что я считаю, следует избавиться от любых ресурсов.

Итак, у меня есть пара запросов

  1. У кого-нибудь были подобные проблемы и удалось их обойти
  2. Как программно узнать, что процесс эгоистично заблокировал файл !!!

Приветствия

Ответы [ 3 ]

4 голосов
/ 20 ноября 2008

Sysinternals handle.exe - это первый шаг. Или используйте Process Explorer Find Handle or DLL. Однако всегда безопаснее убить процесс , чем закрыть дескриптор.

Программно это вопрос написания драйвера ядра, который читает таблицу дескрипторов Windows.

2 голосов
/ 20 ноября 2008

ProcessMon (для поиска) и Unlocker (по крайней мере для разблокировки) также полезны.

1 голос
/ 20 ноября 2008

Sysinternals FileMon содержит некоторую информацию (прокрутить вниз) о том, как они достигли этого в более старых версиях Windows.

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

-Adam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...