|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Yaroslav Tchayckovsky 2:5076/13.12 05 May 2002 18:09:04 To : Artem Chuprina Subject : Как правильно модифицировать файл? -------------------------------------------------------------------------------- 03 Май 02 12:29, you wrote to Sergey Gernichenko: SG>> сабж в скрипте? делаю так: SG>> open F,"+<blabla"; SG>> flock (F,1); SG>> #чтение данных в память SG>> flock (F,2); SG>> #Запись в тот же файл, замещая всё SG>> close (F); SG>> Правильно ли это? AC> Hет. Очевидный deadlock при попадании в это место одного такого скрипта, AC> когда другой находится в первой половине. А как тогда правильно делать? У меня почти похожая проблема. Кусок кода делает следующее открывает файл room на чтение, считывает оттуда данные, выполняет некоторые преобразования над этими данными, потом перезаписывает этот же файл преобразованными данными. Меня волнует, что в момент преобразования данных, гипотетически существует вероятность записи данных в этот файл другим скриптом, получится что эти дописанные новые данные будут затерты при перезаписи файла. open (room, "$filesdir/$room_name.txt"); @topics=<room>; @topics2 = grep(!/^$FORM{'id'}/, @topics); $out_str=join($end_string, $FORM{'id'}); push (@topics2,$FORM{'id'}); open (room_file, ">$filesdir/$room_name.txt"); print room_file @topics2; print room_file $end_string; close (room); close (room_file); Yaroslav --- * Origin: silence (Winamp is not active ;-) (2:5076/13.12) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/32853cd52339.html, оценка из 5, голосов 10
|