|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Roman Chumakov 2:5020/400 24 Oct 2000 22:26:35 To : All Subject : Symbol::gensym() -------------------------------------------------------------------------------- При использовании сабжа для открытия файлов , после, где-то, 2-х миллионов открытий-закрытий кончились иноды :( Сообщение на системной консоли такое: Oct 24 19:34:29 wwwu /kernel: pid 61218 (vi), uid 0 on /: out of inodes FreeBSD-4.1.1 256Mb памяти Суть действий выполнявшегося скрипта такая: 1. открыть очередной (новый) файл. 2. Поставить lock на него 3. Записать данные 4. Снять lock 5. Закрыть файл (6. Перейти на шаг 1.) my $froot = "./filebase/"; for($i1=0;$i1<20;$i1++){ for($i2=0;$i2<20;$i2++){ for($i3=0;$i3<20;$i3++){ for($f=0;$f<1000;$f++){ my $dir = $froot . "$i1/" . "$i2/" . "$i3/"; my $fn = $dir . "$f.htm"; my $text = "<html><body>$f</body></html>"; mkpath( $dir ); my $fh = Symbol::gensym(); open ($fh,">${fn}") || die "Cannot open file ${fn} for writing"; flock($fh, LOCK_EX); print $fh $text; flock($fh, LOCK_UN); close($fh); } } } } Видимо я неправильно использую Symbol::gensym() А как-же его использовать, чтобы иноды не кончились? Спасибо. Роман. --- ifmail v.2.15dev5 * Origin: MTU-Intel ISP (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/91049ec7c565.html, оценка из 5, голосов 10
|