crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Удаление временных файлов в Active Directory
SABROG
  опции профиля:
сообщение 16.5.2009, 21:38
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Юзал QTemporaryFile для удаления временных файлов, но если приложение запускают прямо из сети, то временные файлы не удаляются. Точно такая же история и с vim/gvim, его файлики с тильдой "~" остаются на удаленном хосте, чем загаживают папочку с php скриптами на web сервере.

Я так понимаю используются какие-то нативные средства винды для управления временными файлами и Qt сама не удаляет файл, а рассчитывает на то, что это сделает ОС. Никто с этим не сталкивался?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.5.2009, 18:59
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(SABROG @ 16.5.2009, 22:38) *
но если приложение запускают прямо из сети
Что значит прямо из сети?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 17.5.2009, 19:09
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(ViGOur @ 17.5.2009, 19:59) *
Цитата(SABROG @ 16.5.2009, 22:38) *
но если приложение запускают прямо из сети
Что значит прямо из сети?

Из папки, которая находится на другом компьютере в сети. Временные файлы при этом создаются в рабочей директории, т.е. сетевой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.5.2009, 19:54
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Мда, попробуй в ближайшее время. Честно говоря не встречался с таким.

В исходнках класса QTemporaryFile копался? Чтобы узнать почему он так себя ведет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 18.5.2009, 16:50
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Глупо может, но... Если есть фиксированный список файлов, то удалить все "не нужные" файлики.нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 19.5.2009, 12:41
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Попробуйте такой код. Непонятно почему не удаляет (даже не в Active Directory):

#include <QtCore/QtGlobal>
#include <QtCore/QtDebug>
#include <QtCore/QCoreApplication>
#include <QtCore/QTemporaryFile>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTemporaryFile file(QLatin1String("mytemp"));
    file.setAutoRemove(true); // по умолчанию и так true
    if (file.open()) {
        qDebug() << file.fileName();
    }
    return a.exec();
}


Если поменять так, то файл удаляется.
    //return a.exec();
    return 0;


Че за фигня, деструктор QTemporaryFile не вызывается при ctr+c или закрытии консольного окна через крестик?

Сообщение отредактировал SABROG - 19.5.2009, 12:49
Прикрепленные файлы
Прикрепленный файл  temporary.zip ( 592 байт ) Кол-во скачиваний: 135
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 19.5.2009, 13:08
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


SABROG,
думаю может это связанао с тем что не закрываешь файл - он открыт на момент закрытия приложения.

может стоит попробовать закрыть файл.

Цитата(SABROG @ 19.5.2009, 13:41) *
при ctr+c или закрытии консольного окна через крестик?

может код возврата влияет на работу деструктра. ctrl+c выход принудительный срочный, если не ошибаюсь, он не ноль возвращает точно так же и крестик окна консолного приложения.

-----
проверил так оно и есть.
код возврата влияет.

получается нужно найти возможность выходить по qApp->quit() -- наверное так.

Сообщение отредактировал kwisp - 19.5.2009, 13:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 19.5.2009, 13:54
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(kwisp @ 19.5.2009, 14:08) *
получается нужно найти возможность выходить по qApp->quit() -- наверное так.


Это бесполезно. Программы крашатся, свет вырубается, роутеры зависают и т.д. По сути класс QTemporaryFile бесполезен. Нужно еще программу допиливать до того, чтобы при запуске проверялись временные файлы и удалялись к чертям. Или папку temp вместе с программой создавать, если она существует при запуске - килять нафиг. Проблема только в том, что некоторыми программами можно пользоваться раз в год и если временный файл на несколько гигов, то будет очень обидно.

P.S.: close() никак не влияет

Сообщение отредактировал SABROG - 19.5.2009, 13:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 19.5.2009, 14:30
Сообщение #9


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(SABROG @ 19.5.2009, 14:54) *
P.S.: close() никак не влияет

это проверил убдился. просто предположение было

Цитата(SABROG @ 19.5.2009, 14:54) *
Это бесполезно. Программы крашатся, свет вырубается, роутеры зависают и т.д.

ну что могу сказать, это мне кажется философский вопрос - нам тоже рекомендуют писать как можно защищенне от такого рода событий( на объекте женщина назовем её оператор на обучении сломала большим пальцем пробел на клаве после того как ей сказали "жми" :) ).

я согласен что если задеть шнур ногой и этим вырубить питание либо сеть можно много косяков наблюдать.



SABROG,
а если файлы создавать в темповой папке которая раз в неделю или при перезапуске очищается? ну это уже к вопросу администрирования. тоже вариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.5.2009, 15:19
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(SABROG @ 19.5.2009, 16:41) *
деструктор QTemporaryFile не вызывается при ctr+c или закрытии консольного окна через крестик?
она и будет валится, т.к. Qt необрабатывает события завершения консольного приложения.
Я об этом уже тему заводил (уже забыл какую)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 19:01