RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Установка атрибутов файлов из Rexx


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Improver
To : Aleksey Tarasow
Subj : Установка атрибутов файлов из Rexx

> > > В Regine не поддерживается установка атрибутов файлов при поиске SysFileTree, о чем прямо написано в документации. Программа не останавливается по ошибке, но и не выполняет установку атрибутов. Возможно альтернативные версии библиотеки ведут себя по другому, не проверял так как важна совместимость.
> > > В настоящее время нашел только один способ обойти проблему, использовать команду системы «attrib», она есть везде. Но очень тормозная. Так что время выполнения скриптов увеличивается.
> > > Такой вопрос, а есть иной способ установить флаги файлов из Rexx, кроме SysFileTree и attrib?
> > Еще со времен DOS и Нетвари существует универсальный и простой, а главное правильный, поскольку атомарный, принцип лочки файлов. А именно переименование. Команда rename выполняется атомарно на всех существующих системах с очень данных времен.
> > Я в свое время написал большое количество распределенных многозадачных систем именно на этой технологии. И лучшего для файлов пока еще не придумали.
> > Коротко - при захвате файла процесс его переименовывает и работает. Как закончил, может переименовать обратно. Все остальное - от лукавого.
>
> А если важно имя файла? Например, у всех файлов стартерное расширение "txt", файлы с иным расширением могут находиться в этом месте, но сознательно игнорируются. А в имени файла закодирована дата. При старте скрипт ищет все файлы с расширением "txt" и с нужной датой (датами) в имени, и дальше ведет отработку найденных файлов.
>
> Ситуация 1: некий скрипт начал работу с файлом, и изменил расширение на "tmp". Результат: данный файл не был найден при поиске, и как следствие не отработается. Хотя на момент предполагаемой отработки, он мог уже освобожден.
> Ситуация 2: Скрипт залочил файл путем создания флага "имя_stop.txt". Исходный файл найден при поиске, перед началом отработки нашли лочку и ждем. Опа - лочка пропала, ставим свою. А что будет, если два или более скрипта работают почти синхронно (разве это невозможно)? То есть отсутствие лочки увидели сразу два скрипта, и оба начали ставить свою лочку. Мы думали обходить это двух уровненной лочкой, по двум атрибутам и произвольной паузой (для раз синхронизации) между первой и второй лочкой.
>
> Пока меня очень заинтересовали семафоры. Разбираюсь по чуть-чуть.
> Но начался рабочий год... и что-то все резко его начали. Обычно народ просыпался только к 15-17 числу...

С семафорами можешь запросто наступить на те же грабли, что описал в "ситуации 2". Надо уходить от неопределённости с файлами, например, пусть скрипты получают для обработки не список, а один файл, и если он занят, то ждёт его освобождения по семафору или файловой метке. А основная программа пусть ищет файлы и запускает скрипты... Тогда, по крайней мере, там можно будет хоть как-то контролировать весь процесс.

Thu 15 Jan 2015 20:38 Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.