Это команда with-lock-ex, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
with-lock-ex - шкафчик для файлов
СИНТАКСИС
с-замком-экс -w|-q|-f файл блокировки команду арг ...
ОПИСАНИЕ
with-lock-ex откроет и заблокирует файл блокировки для записи, а затем загрузит оставшуюся часть
его аргументы Exec(2); когда этот процесс завершится, fd будет закрыт, а файл
разблокируется ядром автоматически.
Если файл не существует, он создается с разрешениями rw для каждого класса пользователей для
который в маске есть w.
ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ
-w Подождите, пока блокировка станет доступной.
-f Ошибка (печать сообщения в stderr и выход из 255), если блокировка не может быть получена
сразу, потому что он есть у другого процесса.
-q Тихо ничего не делать (т. Е. Выйти из 0 вместо выполнения указанного процесса), если
Блокировка не может быть получена немедленно, потому что она есть у другого процесса.
STALE ЗАМКИ
Используемый протокол блокировки не страдает от устаревших блокировок. Если замок не может быть
получено, один или несколько запущенных процессов должны в настоящее время удерживать блокировку; если замок должен
быть освобожденными, эти процессы должны быть убиты.
Ни при каких обстоятельствах не следует запускать cron-задания по «устаревшей очистке блокировок» или тому подобное.
В системах, где может существовать очень много блокировок, старые файлы блокировок могут быть удалены из cron, но
только если каждая блокировка получена до того, как файл блокировки будет удален, например, с помощью
с-замком-экс -q файл блокировки rm файл блокировки
ЗАМКИ
Обнаружения взаимоблокировок нет. В системе с несколькими блокировками иерархия блокировок должна
быть установлено так, чтобы для каждой пары замков A и B который процесс может заблокировать
одновременно, либо A>B or B>A где отношение> транзитивно и нециклически.
Тогда для любых двух замков X и Y X>Y запрещено приобретать X удерживая Y.
Вместо этого приобретите X сначала или отпустите Y до (повторного) приобретения X и Y в этой последовательности.
(Есть более сложные способы избежать взаимоблокировок, но иерархию блокировок просто
понять и реализовать. Если это не соответствует вашим потребностям, обратитесь к литературе.)
БЛОКИРОВКА ПРОТОКОЛ
Протокол блокировки, используемый с-замком-экс заключается в следующем:
Блокировка удерживается процессом (или группой процессов), который удерживает эксклюзивную блокировку fcntl.
в первом байте простого файла с указанным именем. Держатель замка
(и только владелец блокировки) может удалить файл или изменить индексный дескриптор, которому присвоено имя
ссылается, и как только он это делает, он перестает удерживать замок.
Любой процесс может создать файл, если он не существует. Файл не нужно
содержат какие-либо актуальные данные. Действительно, на самом деле использование файла для хранения данных сильно
не рекомендуется, так как это исключает большинство стратегий для надежного обновления. Использовать
вместо этого отдельный файл блокировки.
Возможность получить блокировку соответствует разрешению на запись в файл (и, конечно,
разрешение на создание файла, если он еще не существует). Однако процессы с
только разрешение на чтение файла может вообще предотвратить получение блокировки; следовательно
файлы блокировки обычно не должны быть доступны для чтения всем.
Когда (группа) процессов желает получить блокировку, она должна открыть файл (с
O_CREAT) и заблокируйте его с помощью ФКНТЛ(2) Ф_RWLCK, операция F_SETLK or F_SETLKW. Если это
успешно, он должен fstat дескриптор файла, который у него есть, и файл по его пути. Если
устройство и индексный дескриптор совпадают, тогда блокировка была получена и остается полученной до тех пор, пока
группа процессов изменяет файл, к которому относится имя, удаляет файл или выпускает
блокировка fcntl. Если они этого не сделают, то другой процесс получил блокировку и удалил
файл тем временем; теперь вы должны закрыть свой файловый дескриптор и начать заново. с замком
ex следует этой спецификации.
Обратите внимание, что стадо(2) - это другой тип блокировки для ФКНТЛ(2). с-замком-экс использования ФКНТЛ.
Используйте with-lock-ex онлайн с помощью сервисов onworks.net