Russian Qt Forum
Ноябрь 23, 2024, 14:39
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Удаление загруженных динамических библиотек с помощью QFile::remove(...)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Удаление загруженных динамических библиотек с помощью QFile::remove(...) (Прочитано 4643 раз)
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
:
Январь 20, 2015, 20:37 »
Приложение запущено, загружены плагины. В само приложение встроена возможность миграции, это условие техзадания. То есть, при указании в нём каталога, куда оно должно быть перемещено, оно копирует свои плагины и пытается их удалить. Но библиотеки загружены и залочены ОС. Кто использовал что-то похожее в разных ОС? Как себя ведет конкретно QFile::remove(...) в такой ситуации в разных ОС? Только ошибку возвращает из-за залочки, или файл помечается и удаляется сразу после разлочки? Проверять все варианты сейчас нет возможности, а надо спроектировать, чтобы для других платформ не пришлось переделывать.
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #1 :
Январь 20, 2015, 20:57 »
Насколько я знаю, с вендой ничего не сделать, загруженные библиотеки не удалить. Придётся завершаться и рестартовать.
Под нормальными операционными системами открытые файлы спокойно удаляются, реально файл будет удален, когда его закроет последний пользователь.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #2 :
Январь 20, 2015, 21:16 »
Так в вениках и после рестарта ничего не удаляется, по крайней мере, командой del в консоли. То есть, получается, надо городить удаление перед загрузкой плагинов. То есть, для этого специально в настройках хранить старый каталог плагинов.
Или в вениках QFile::remove() умеет удалять, когда файл освобожден? Вот в чем вопрос.
«
Последнее редактирование: Январь 20, 2015, 21:18 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #3 :
Январь 20, 2015, 21:20 »
Цитата: Гурман от Январь 20, 2015, 21:16
Так в вениках и после рестарта ничего не удаляется... То есть, получается, надо городить удаление перед загрузкой плагинов.
Завершили программу использующую плагины из старого места, удалили плагины в старом месте, запустили программу из нового места и загрузили плагины из нового места.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #4 :
Январь 20, 2015, 21:22 »
Пока библиотеки плагинов загружены, они будут защищаться ядром, если их выгрузить, то remove их спокойно удалит.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #5 :
Январь 20, 2015, 21:25 »
Некоторые плагины невозможно выгрузить - это плагины со своими окнами, которые исторически сделаны на классе QMainWindow, они были сделаны из приложений. При их выгрузке происходит падение где-то в библиотеках ОС. Переделывать их сейчас нереально.
ЗЫ я пользуюсь в вениках файл-менеджером FreeCommander, начиная с прошлогодней версии он умеет откладывать удаление залоченных файлов.
А в новых вениках типа 7 и 8+ тоже весь этот бред сохранился?
«
Последнее редактирование: Январь 20, 2015, 21:28 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #6 :
Январь 20, 2015, 21:26 »
Цитата: Гурман от Январь 20, 2015, 21:25
Некоторые плагины невозможно выгрузить - это плагины со своими окнами, которые исторически сделаны на классе QMainWindow. При их выгрузке происходит падение где-то в библиотеках ОС.
Остаётся завершать приложение и перезапускаться из нового расположения.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #7 :
Январь 20, 2015, 21:29 »
Цитата: Old от Январь 20, 2015, 21:26
Цитата: Гурман от Январь 20, 2015, 21:25
Некоторые плагины невозможно выгрузить - это плагины со своими окнами, которые исторически сделаны на классе QMainWindow. При их выгрузке происходит падение где-то в библиотеках ОС.
Остаётся завершать приложение и перезапускаться из нового расположения.
И получается только после перезапуска тогда можно удалить, для этого надо при завершении сохранить старый каталог.
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #8 :
Январь 20, 2015, 21:32 »
Цитата: Гурман от Январь 20, 2015, 21:29
И получается только после перезапуска тогда можно удалить, для этого надо сохранить старый каталог.
Получается так. Не скажу про восьмёрку, но вроде до семерки, точно блокировались открытые файлы.
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #9 :
Январь 22, 2015, 12:32 »
Это что, у меня в семерке если был открыт exe файл, то после его закрытия система не дает его удалить некоторое время.
Т.е. я его удаляю через Shift_Del, он исчезает в проводнике, далаю обновление, он опять появляется. И висит где то с пару минут, потом сам удаляется.
Если удалить в козину- требует права админа, хотя я и так в групе админ. Бывает и такое, на других машинах с семеркой файлы удаляются сразу.
Наверное что то намудрил в политиках безопасности.
Записан
Bepec
Гость
Re: Удаление загруженных динамических библиотек с помощью QFile::remove(...)
«
Ответ #10 :
Январь 22, 2015, 13:16 »
Видимо у вас что то действительно с политиками и самое виндой. Лично я бы воспринял "воскрешение" файла как прямой вызов к поединку с ОС
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...