|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/371.32 12 Oct 2000 13:59:24 To : zerge@land5.nsu.ru Subject : Re: flock() или ... --------------------------------------------------------------------------------
zlnr> была такая фишка: один срипт должен был писАть в файлик (добавлять
zlnr> строчечку), ну и при открытии делал на него flock(), потом просто
zlnr> закрывал его. Вроде всё нормально... Hо в какой-то момент, он перестал
zlnr> добавлять в этот файлик строчечки, ну, думаю, баг, начал копать -
zlnr> вставлять всякие принты, вываливающиеся прямо на страничку... всё вроде
zlnr> нормалёк - кусок кода отработал, все переменные правильные, все if'ы и
zlnr> for'ы проходят... я задумался... потом снова полез в файлик, и, о чудо!,
zlnr> добавилась нужная строчечка. Тут я снова задумался "какого [cencored]
zlnr> спрашивается?". Меня стали грызть нехорошие мысли - а если ещё раз такая
zlnr> же хрень приключится? Вот и задаю вопрос многоуважаемому Аллу: как
zlnr> ентот flock работает? если скрипт ломается посередине, то снимается ли с
zlnr> файла lock? и как вообще реализован этот flock? а может и не в flock'e
zlnr> дело?
Если не оговорено особо, то flock ждет до того момента, когда ему позволят
залочить файлхендл указанным образом. Лочит и продолжает работать. Лок
автоматически снимается по закрытии файла, независимо от того, каким образом
закрыли файл (по close, по сдыхании данного процесса, ...) Тонкость - сдыхание
скрипта, вообще говоря, не означает сдыхания процесса - скрипт может
выполняться, скажем, под mod_perl. Посему в подобных ситуациях полезно лочить
не файлхендл, а my-переменную класса File::Handle или подобных - если все не
совсем плохо, то по смерти скрипта переменная будет удалена штатно, а
следовательно, файл закрыт.
--
Счастливо!
Ран.
--- ifmail v.2.14.os-p7-tma3
* Origin: MemoNet (2:5020/371.32@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/171219efd7257.html, оценка из 5, голосов 10
|