Придумал новый алгоритм для лоченья файлов. Где можно наколоться пока не вижу. Но опыт, конечно, покажет. Также у меня всегда остётся запасной вариант: man 1 flock, man 2 flock.
Допустим, нам надо изменить test.txt
1. Проверяем, нет ли test.txt.lock, изменённого менее 30 секунд назад.
2. Если есть, ждём 100 ms, идём на пункт 1.
3. Стираем лок-файл, изменённый старше 30 секунд:
find . -maxdepth 1 -mmin +0,5 -name test.txt.lock -delete
(Команду надо ещё проверить). Стирать хочется именно одной командой, чтобы во время её выполнения другой скрипт не вставил свой файл.
4. Делаем аппенд к лок-файлу:
(append-file "test.txt.lock" (append id "\n"))
5. Если мы не успели, идём на пункт 1.
6. Мы успели. Делаем необходимые манипуляции с test.txt.
7. Стираем lock-файл.
Подписаться на:
Комментарии к сообщению (Atom)
Архив блога
-
▼
2010
(64)
-
▼
апреля
(19)
- Lock: продолжение.
- newLISP: самодельная блокировка текстовых файлов
- JavaScript: закрывать псевдопопап по Escape
- SICP: малая теорема Ферма
- Uptime в среде Windows
- SICP 1.19: Фибоначчи по логарифму
- Чётные числа
- SICP: итеративное возведение в степень
- Способы разменять монеты
- Хвостовая рекурсия
- Фриддл, ДКА и НКА
- SICP
- JavaScript: навигация стрелками и Enter
- Windows -> Linux: ошибка sh: ./index.cgi: not found
- Обработка html в newLISP
- CSS: отцентровать весь документ
- Три добродетели программиста
- PuTTY и слепой синий цвет
- Миграция PHP программы с Windows на Linux
-
▼
апреля
(19)
Комментариев нет:
Отправить комментарий