Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     13 May 2002  16:02:47
 To : Yaroslav Tchayckovsky
 Subject : Re: Как правильно модифицировать файл?
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Yaroslav Tchayckovsky.
 
  SG>>>>>>> open F,"+<blabla";
  SG>>>>>>> flock (F,1);
  SG>>>>>>> #чтение данных в память
  SG>>>>>>> flock (F,2);
  SG>>>>>>> #Запись в тот же файл, замещая всё
  SG>>>>>>> close (F);
  SG>>>>>>> Правильно ли это?
  AC>>>>>> Hет. Очевидный deadlock при попадании в это место одного такого
  AC>>>>>> скрипта, когда другой находится в первой половине.
  YT>>>>> А как тогда правильно делать?
  AC>>>> Если ты собираешься лочить файл эксклюзивным локом, это надо делать
  AC>>>> сразу.
  YT>>> Сразу это когда именно? До его открытия что-ли?!
  AC>> Hет, сразу после. Вместо shared.
 
 YT> Может я  совсем тормоз, но что-то не въеду.
 YT> Давай я попробую от корней пойти.
 YT> Формат flock такой:
 
 YT> flock(filehandle, operation);
 
 YT> operation:
 
 YT>     $LOCK_SH = 1;
 YT>     $LOCK_EX = 2;
 YT>     $LOCK_NB = 4;
 YT>     $LOCK_UN = 8;
 
 YT> $LOCK_SH=1 - SHARED LOCK ???
 
 Угу.
 
 YT> $LOCK_EX=2 - Exclusive lock нельзя писать в файл, можно читать.
 
 Как раз наоборот. LOCK_SH подразумевает, что читать можно, писать - нет (более
 точно, он подразумевает, что доступ туда же в тот же самый момент может делать
 кто-то еще, потому и shared, что естественно для чтения, но неестественно для
 записи). LOCK_EX имеет семантику "а сейчас с этим ресурсом могу работать
 только я, а остальные подождут". Что уже подразумевает "могу нафиг все
 сломать, но потом починить".
 
 YT> $LOCK_NB=4 - ????
 
 non-blocking. Побитовое "или" с другими режимами. Смысл - если запрошенный лок
 в момент обращения получить невозможно, flock не будет ждать, пока дадут, а
 завершится сразу с ошибкой.
 
 YT> $LOCK_UN=8 - снять лок.
 
 -- 
 Artem Chuprina
 Communiware.net
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Как правильно модифицировать файл?   Sergey Gernichenko   29 Apr 2002 19:13:18 
 Re: Как правильно модифицировать файл?   Artem Chuprina   03 May 2002 12:29:28 
 Как правильно модифицировать файл?   Yaroslav Tchayckovsky   05 May 2002 18:09:04 
 Re: Как правильно модифицировать файл?   Artem Chuprina   06 May 2002 11:46:56 
 Как правильно модифицировать файл?   Yaroslav Tchayckovsky   07 May 2002 21:39:29 
 Re: Как правильно модифицировать файл?   Artem Chuprina   08 May 2002 11:05:49 
 Как правильно модифицировать файл?   Yaroslav Tchayckovsky   10 May 2002 15:37:12 
 Re: Как правильно модифицировать файл?   Alexey Pchelnikov   10 May 2002 23:30:13 
 Как правильно модифицировать файл?   Yaroslav Tchayckovsky   11 May 2002 10:16:13 
 Re: Как правильно модифицировать файл?   Alexey Pchelnikov   11 May 2002 15:40:42 
 Re: Как правильно модифицировать файл?   Artem Chuprina   13 May 2002 16:02:47 
 Re: Как правильно модифицировать файл?   Sergey Gernichenko   07 May 2002 23:18:58 
 Re: Как правильно модифицировать файл?   Artem Chuprina   08 May 2002 11:07:53 
 Re: Как правильно модифицировать файл?   Sergey Gernichenko   09 May 2002 03:54:20 
 Re: Как правильно модифицировать файл?   Artem Chuprina   13 May 2002 16:04:54 
 Как правильно модифицировать файл?   Yaroslav Tchayckovsky   12 May 2002 20:11:44 
 Re: Как правильно модифицировать файл?   Artem Chuprina   13 May 2002 16:04:58 
 Re: Как правильно модифицировать файл?   Sergey Gernichenko   13 May 2002 23:14:42 
 Re: Как правильно модифицир овать файл?   Andrey Sapozhnikov   16 May 2002 17:06:30 
Архивное /ru.cgi.perl/144542bae1d45.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional