Нужен способ определить, делается ли запись файла в - PullRequest
6 голосов
/ 18 июня 2010

Ситуация, в которой я сейчас нахожусь, - это процесс, который пишет в файл, иногда файл довольно большой, скажем, 400 - 500 МБ.Мне нужно знать, когда он закончил писать.Как я могу это определить?Если я загляну в каталог, то увижу его там, но, возможно, это не будет сделано во время записи.Кроме того, это должно быть сделано удаленно - как в той же внутренней локальной сети, но не на том же компьютере, и обычно процесс, который хочет знать, когда выполняется запись файла, выполняется на компьютере Linux с процессом, который записывает файл исам файл на коробке окна.Нет самбы не вариант.Связь xmlrpc со службой в этом окне Windows является опцией, а также использует snmp для проверки ее жизнеспособности.

В идеале

  • Работает в Linux или Windows - это означает, что решениеОС не зависит.
  • Работает для любого типа файла.

Достаточно хорошо:

  • Работает только на окнах, но может быть сделано через какую-то библиотеку или что угодно, что может бытьдоступ к нему осуществляется через Python.
  • Работает только для файлов PDF.

В настоящее время лучше всего периодически открывать рассматриваемый файл в каком-либо процессе в окне Windows и смотреть на проверку последних байтов.для конечного тега PDF и учета различий в eol, поскольку файл может быть создан в Linux или Windows.

Ответы [ 2 ]

6 голосов
/ 18 июня 2010

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

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

1 голос
/ 19 июня 2010

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

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