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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Michael Samanov                      2:550/5068.1515 19 Jan 2001  00:45:51
 To : Artem Chuprina
 Subject : Re: flock
 -------------------------------------------------------------------------------- 
 
 Hello, Artem!
 
 At Thu, 18 Jan 01 12:00:24 +0300 Artem Chuprina wrote:
 
 AC> ненадежно), в досе - rename(). В юниксе rename() тоже атомарная, но
 AC> разрушающая, так что следует быть бдительным. И дополнять обработчиками
 
 die,
 
 AC> сигналов, и проверкой кроном залипших флаг-файлов.
 
 Меня гложут смутные сомнения... Вот сделал я нечто подобное для
 перезаписи файлов с созданием бэкапа, а теперь сумлеваюсь.
 Вопрос ниже.
 
 $new = IO::File->new("$filename.n", "a+");
 
 $new->flock(LOCK_EX | LOCK_NB) or die $!;
 
 $old = IO::File->new($filename, "r");
 
 $old->flock(LOCK_EX | LOCK_NB) or die $!;
 $new->seek(0,0);
 $new->truncate;
 $new->print(......);
 $new->flush;
 
 rename $filename, "$filename.b" or die $!;
 rename "$filename.n", $filename or die $!;
 
 $old->close;
 $new->close;
 
 Ежели где синтаксис неправильный или метод отсутствует, нижайше
 прошу простить, оно только для объяснения принципа. Естественно,
 весь этот бред сидит внутри eval.
 
 ВHИМАHИЕ, ВОПРОС!
 
 Где в такой схеме может подкрасться враг? Я имею в виду, в какой
 строчке чужой процесс может вклиниться и нагадить? В том, что
 открытый файл можно переименовывать, даже и не сомневайтесь.
 Можно. Естественно, я не имею в виду MD by BG.
 
 Sincerely yours, Michael (mailto:mike@vlink.ru).
 --- ifmail v.2.14
  * Origin: Mike's home (2:550/5068.1515@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 flock   Andrei V. Lisyansky   13 Jan 2001 19:20:35 
 flock   Sly Golovanov   15 Jan 2001 04:30:41 
 flock   Andrei V. Lisyansky   16 Jan 2001 20:02:30 
 Re: flock   Artem Chuprina   18 Jan 2001 13:00:24 
 Re: flock   Michael Samanov   19 Jan 2001 00:45:51 
 flock   Sly Golovanov   17 Jan 2001 12:31:01 
 flock   Yan Alexandrovsky   15 Jan 2001 08:35:49 
 flock   Andrei V. Lisyansky   16 Jan 2001 19:57:46 
 flock   Yan Alexandrovsky   18 Jan 2001 09:03:00 
 Re: flock   Artem Chuprina   15 Jan 2001 11:31:23 
 flock   Andrei V. Lisyansky   16 Jan 2001 20:10:44 
 Re: flock   Michael Samanov   17 Jan 2001 10:34:28 
Архивное /ru.cgi.perl/794986cd0e11.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional