Em 9/12/2009 15:53, Eli Rigobeli escreveu:
Oi hamacker, atualmente minha aplicação faz algo parecido. Quando o usuário solicita a interface que necessita do dispositivo montado, eu verifico se o "node" /dev/sda (só utilizo o sda mesmo) foi criado com o fopen, se foi criado eu faço o mount. Eu preciso de outra solução, algo como "signal", quero que o usuário insira o USB e em seguida apareça a interface listando os arquivos. Não gostaria de ficar monitorando todo o tempo pela aplicação. Muito obrigado -- Eli Rigobeli
Você pode monitorar o arquivo /proc/bus/usb/devices ou o diretório /devOu então utilizar o udev[1] (se não me engano o hal e o dbus também te dão este controle, porém normalmente estão instalados apenas em ambientes desktop).
Basta criar uma regra para o dispositivo específico, caso necessário, para que seja executado um determinado script quando o dispositivo for identificado[2], neste script você envia uma chamada para sua aplicação, através de sinais (normalmente se grava o pid da aplicação no diretório /var/run quando esta é iniciada, quando encerra apaga o arquivo, no script basta checar se o arquivo existe e pegar o pid), sockets, memória compartilhada, mensagens entre processos e etc.
[1] http://reactivated.net/writing_udev_rules.html [2] http://reactivated.net/writing_udev_rules.html#external-run A[]'s