![]() |
|
|
![]()
|
|
| dmitrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Как программно в qt узнать, что в системе (linux) появился новый съемный носитель? ( новый имеется в виду вновь вставленный)
Думал чтото вроде сканировать папку /media, но нынче съемные носители на нестабильной ветке gentoo у меня появляются в /run/media/user, завтра я вообще не знаю где они могут появиться Второй вариант парсить /proc/mounts, но эти оба варианта предполагают какие-то циклы или таймеры, хотелось бы какой-нибудь сигнальчик |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Через DBus, например.
|
|||
|
||||
| dmitrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Про DBUS я то и забыл, спасибо, поизучаем
|
|||
|
||||
| kuzulis |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
Может проще через udev под Linux, и через SetupAPI под Windows. Кстати, на просторах инета (на gitorious.org) видел реализацию класса с подобным функционалом, но щас припомнить не могу. Вот, нашел: http://qt-apps.org/content/show.php/QDevic...?content=145200 |
|||
|
||||
| dmitrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Спасибо, погляжу P.S. Поглядел, штука хорошая, но не дает информации куда смонтировано устройство. Мне надо в программе, выбрать из списка устройств и прочитать/записать в/из него данные (т.е скопировать или записать готовый файл) P.S.S Сейчас пришла в голову мысль, что возможно все это можно сделать стандартными средствами. Но просто изначально мысль была сделать обновление программы, которое было бы на мой взгляд наиболее простым со стороны пользователя. Пользователь заходит в меню обновить ПО, выбирает из списка смонтированный внешний накопитель ( Если вдруг в этом промежутке времени пользователь решил вставить флешку, приходит сигнал о появлении нового устройства, и далее это новое устройство добавляется в список) и нажимает кнопку обновить программу. Это сообщение отредактировал(а) dmitrio - 28.6.2012, 07:35 |
|||
|
||||
| dmitrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Решил распарсиванием файла /proc/mounts, по сигналу добавления нового устройства из QDeviceWatcher
|
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Есть два вменяемых варианта -- один -- сделать в своей программе возможность посылки команд своим копиям из выполняемого файла. И определить, что команда newdev XXX указывает на появление носителя в XXX.
Например, каждой копии программы создавать сокеты в ~/.myprog/cmd/, и написать небольшую утилиту, которая по запуска myutil newdev XXX открывает каждый сокет из ~/.myprog/cmd/, и посылает туда команду newdev XXX. Другой -- сделать в своей пограмме (настраиваемый) периодический вызов внешней программы, которая отдавала бы список временных носителей. Можно ещё указать в настройках, какие директории проверять самостоятельно на предмет изменений (либо через поллинг, либо через inotify, это уж как напишэшь), и вызывать этот скрипт при призаках изменений в них. Впрочем, в качестве полумеры можно просто список директорий, в которых что-то монтируется, задавать в настройках. Вопрос настройки соответствующих скриптов отдать системному администратору (вместе с мэйнтэйнером дистрибутива). Поскольку в каждом конкретном случае это очень простые вещи (ну, что там скриптик дёрнуть по втыканию девайса, или список подмонтированного отдать) -- но как оно у меня настроено конкретно сейчас ты всё равно не угадаешь. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |