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


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

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


Thu 15 Jan 2015 17:17 Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20140318 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.