Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отследить вставку / извлечения устройства, Linux 
V
    Опции темы
Alca
Дата 6.9.2012, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Как отследить вставку / извлечения устройства (USB, CD, ...)? ОС Linux.

Это сообщение отредактировал(а) Alca - 6.9.2012, 18:21


--------------------
PM WWW ICQ Skype Jabber   Вверх
boostcoder
Дата 6.9.2012, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



Самый простой способ - сравнивать /etc/mtab. и в случае изменения - находить добавленную строку.

Добавлено через 2 минуты и 29 секунд
а по "хорошему", это делается путем подписки на сообщения DBus, которые рассылает DBus сервер по сигналу от HAL.

PM WWW   Вверх
boostcoder
Дата 6.9.2012, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



а еще, не понятно, как этот вопрос вдруг попал в этот раздел %)

PM WWW   Вверх
Alca
Дата 6.9.2012, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Цитата

а еще, не понятно, как этот вопрос вдруг попал в этот раздел %)


QDBusConnection  smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
tzirechnoy
Дата 6.9.2012, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Сделать скрипт или параметр ком.строки, который должэн быть вызван при вставке/отключении устройства. А там уж пусть мэйнтэйнер дистрибутива парится.
PM MAIL   Вверх
Alca
Дата 6.9.2012, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Linux UbuntuWS-1004-x64 2.6.32-42-generic #95-Ubuntu SMP Wed Jul 25 15:56:09 UTC 2012 x86_64 GNU/Linux

Код

/**
 * \file  CHal.h
 * \brief QDBusConnection wrapper
 */


#ifndef Start_CHalH
#define Start_CHalH
//---------------------------------------------------------------------------
#include <QtDBus/QDBusConnection>   // LIBS += /usr/share/qt4/lib/libQtDBus.so
//---------------------------------------------------------------------------
class CHal :
    public QObject
{
    Q_OBJECT;

    public:
        explicit        CHal   (QObject *parent = NULL);
        virtual        ~CHal   ();

    private slots:
        void            added  (const QString &dev);
        void            removed(const QString &dev);

    private:
        QDBusConnection _m_dbcDBusConn;

};
//---------------------------------------------------------------------------
#endif // Start_CHalH


Код

/**
 * \file  CHal.cpp
 * \brief QDBusConnection wrapper
 */


#include "CHal.h"

#include <QtCore/QDebug>

//---------------------------------------------------------------------------
CHal::CHal(QObject *parent /* = NULL */) :
    QObject       (parent),
    _m_dbcDBusConn(QString())
{
    const QString HAL_SERV      = "org.freedesktop.Hal";
    const QString HAL_MGR_INT   = "org.freedesktop.Hal.Manager";
    const QString HAL_DEV_INT   = "org.freedesktop.Hal.Device";
    const QString HAL_MGR_PATH  = "/org/freedesktop/Hal/Manager";
    const QString HAL_DEVS_PATH = "/org/freedesktop/Hal/devices";

    _m_dbcDBusConn = QDBusConnection::connectToBus( QDBusConnection::SystemBus, "system" );

    _m_dbcDBusConn.connect(HAL_SERV, HAL_MGR_PATH, HAL_MGR_INT, "DeviceAdded",
                           this, SLOT(added(const QString &)) );
    _m_dbcDBusConn.connect(HAL_SERV, HAL_MGR_PATH, HAL_MGR_INT, "DeviceRemoved",
                           this, SLOT(removed(const QString &)) );
}
//---------------------------------------------------------------------------
CHal::~CHal() {

}
//---------------------------------------------------------------------------


/****************************************************************************
*   setup slots
*
*****************************************************************************/

//---------------------------------------------------------------------------
void
CHal::added(const QString &dev) {
    qDebug() << __FUNCTION__ << dev;
}
//---------------------------------------------------------------------------
void
CHal::removed(const QString &dev) {
    qDebug() << __FUNCTION__ << dev;
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Alca - 6.9.2012, 21:33


--------------------
PM WWW ICQ Skype Jabber   Вверх
boostcoder
Дата 6.9.2012, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



ну вот, с HAL`ом все получилось ;)

PM WWW   Вверх
tzirechnoy
Дата 6.9.2012, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Вот только HAL ужэ закопали. Глупо в сишном бинарнике завязывать на какие-то сугубо временные особенности текущей ситуацыи.
PM MAIL   Вверх
boostcoder
Дата 6.9.2012, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



Цитата(tzirechnoy @  6.9.2012,  22:51 Найти цитируемый пост)
HAL ужэ закопали

> s/ужэ/уже/

а что сейчас вместо HAL используют?

Цитата(Alca @  6.9.2012,  21:03 Найти цитируемый пост)
UbuntuWS

это что такое? оО
что-то не гуглится..
PM WWW   Вверх
Alca
Дата 6.9.2012, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



А что есть альтернативы??

Добавлено через 5 минут и 9 секунд
UbuntuWS - это имя хоста

Добавлено через 6 минут и 24 секунды
Ubuntu 10,04 x64


--------------------
PM WWW ICQ Skype Jabber   Вверх
tzirechnoy
Дата 7.9.2012, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
а что сейчас вместо HAL используют?


Если вообще -- то в HAL вообще не было никакого смысла.

Если конкретно для дисков, то:

Используют -- очень по-всякому. У меня вообще ужэ года три комплект самодельных скриптов для udev. До этого было пять строчек в fstab. Многие от HAL ещё не отказались.

А рекомендуют для указанной цэли -- udisks.

Впрочем, его тожэ пишэт гопа сумасшэдшых зайцэв, так что он в таком виде тожэ ненадолго. С другой стороны, эти хотя бы знают, зачем они пишут -- так что всякое legacy (API там) очень можэт остаться.
PM MAIL   Вверх
kuzulis
Дата 7.9.2012, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Братцы, научитесь искать в гугле: 

http://qt-apps.org/content/show.php/QDevic...?content=145200
PM MAIL   Вверх
tzirechnoy
Дата 7.9.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
Братцы, научитесь искать в гугле: 


Директом в udev, ну тожэ вариант. Получшэ, чем HAL -- хотя и тожэ нестабильный (скоро сдохнет, поскольку Поттэринг дорвался до udev).
PM MAIL   Вверх
k0rvin
Дата 12.9.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Цитата(tzirechnoy @ 7.9.2012,  08:51)
...
Используют -- очень по-всякому.
...

А вышеуказанный способ с мониторингом /etc/mtab как, нормально или какие-то проблемы могут быть? Его (mtab) выпиливать не собираются?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
boostcoder
Дата 12.9.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



нормально работает.
выпиливать не собираются.

PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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