Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> unlink file1, file2, Не получается удалить файлы dir и pag 
:(
    Опции темы
kostofffan
Дата 22.7.2004, 23:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Такой отрывочек кода:
Код
if (-e $dir.$player.'_'.$enemy.'.dir') {
dbmopen(%fight, $dir.$player.'_'.$enemy, 0777);
$file_name = $dir.$player.'_'.$enemy;
}
elsif (-e $dir.$enemy.'_'.$player.'.dir') {
dbmopen(%fight, $dir.$enemy.'_'.$player, 0777);
$file_name = $dir.$enemy.'_'.$player;
}
............
if ($fight{'end'}) {
               dbmclose %fight;
               dbmopen %players, 'players', 0777;
$players{$player} = ($players{$player} =~ /^(\d+::)/)[0];
$players{$enemy} = ($players{$enemy} =~ /^(\d+::)/)[0];
dbmclose %players;
print $file_name, "\n";
sleep 5;
(unlink $file_name.'.dir', $file_name.'.pag') || print "0 files deleted: $!\n";
return "END$eol";
} else {
..............


Прикол в том что из этого кода файлы не удаляются. Но когда я копирую:
Код
dbmopen(%fight, $dir.$player.'_'.$enemy, 0777);
dbmclose %fight;
(unlink $file_name.'.dir', $file_name.'.pag') || print "0 files deleted: $!\n";

в новую программу, то файлы чудесно удаляются...
В чем бок.

Сенкс.

P.S.: для чего нужен dir-файл? Он всегда занимает 0 байт. (Может он используется как временный во время выполнения?)
  Вверх
kostofffan
Дата 24.7.2004, 01:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Честно говоря, я долго улыбался, когда до меня дошло!
Дело в том что удаление не получалось так как эти файлы все еще использовались.
Прикол такой, что во время выполнения проверки типа :
Код
if ($fight{'end'}) {dbmclose %fight; ....} else {....}

прога все еще использует эту dbm до окончания блока if. (При чем до окончания всех блоков if)
К примеру, если есть такой код:
Код
if ($dbmbase{..}) {
      if ($dbbase{..}) {
          ..........
      } else {}
}

то программа не даст удалить dbm до окончания самого первого if-блока!
Короче, надолбался я с этим....
  Вверх
kostofffan
Дата 24.7.2004, 01:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, я забыл упомянуть, что теперь выдается ошибка:
Код
Bad file descriptor

но несмотря на это файлы прекрасно удаляются... бывает же ;)

P.S.: кто знает к чему эта ошибка, подскажите!
  Вверх
Чудик
Дата 24.7.2004, 04:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Так это знают ВСЕ даже я
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.4741 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.