Как узнать, когда другой процесс прекратил запись в файл на Perl? - PullRequest
4 голосов
/ 27 января 2009

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

Ответы [ 4 ]

11 голосов
/ 27 января 2009

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

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

Процесс копирования может игнорировать временные именованные файлы.

3 голосов
/ 27 января 2009

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

Процесс cron на другой стороне может периодически проверять наличие обновлений и выполнять свою работу.

1 голос
/ 27 января 2009

Самый простой способ - создать файл с указанием законченной передачи?

0 голосов
/ 27 января 2009

Вы должны использовать Linux :: Inotify2 , это сделано для такого рода вещей! :)

Просто посмотрите событие 'IN_CLOSE' в вашем каталоге FTP ...

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