2011-01-05 4 views
0

스토리지 볼륨이 마운트 또는 마운트 해제되어 있는지 감지해야하는 앱에서 작업하고 있습니다. 나는 그것에 대해 GIO을 사용하고있다. mount-addedmount-removed 신호를 수신합니다. 펜 드라이브를 마운트/마운트 해제 할 때 모든 것이 잘 작동합니다. 그러나 iPod을 장착 할 때 문제가 발생합니다. 내가 마운트 및 마운트 해제 각각에 두 개의 콜백을 받고있다. GMount 개체 중 하나가 shadowed 일 것이라고 가정했지만 g_mount_is_shadowed은 둘 모두에 대해 false를 반환합니다. 처리 할 항목과 무시할 항목을 어떻게 결정합니까? 둘 다 처리 할 수 ​​없습니다. 마운트 장치를 감지하고 저장 장치에 해당하는 마운트 해제를 수행해야합니다.iPod 탑재시 다중 마운트 이벤트

int main() 
{ 
    g_type_init(); 
    GVolumeMonitor* volume_monitor = g_volume_monitor_get(); 
    g_signal_connect(G_OBJECT(volume_monitor), "mount-added", G_CALLBACK(mount_added), NULL); 
    g_signal_connect(G_OBJECT(volume_monitor), "mount-removed", G_CALLBACK(mount_removed), NULL); 

    GMainLoop* main_loop = g_main_loop_new(NULL, FALSE);   
    g_main_loop_run(main_loop); 
    ... 
} 
+0

'볼륨 추가'및 '볼륨 제거'를 시도 했습니까? – ismail

+0

나는 그랬다. 그리고 나는 단지 1 콜백 만 받는다는 것을 알았다. 그러나 모든 사용 사례 (모든 * 스토리지 * 장치의 추가/제거를 감지 할 수 있기를 원합니다)가 확실하지 않으며 광범위한 테스트를 피하기 위해 'mount-xxx'신호를 사용하고 싶습니다. 사례. – 341008

+0

모든 저장 장치는 Linux의 볼륨입니다. 실제로 하나를 시도 했습니까? – ismail

답변

0

나는 그것을 알아 냈습니다. GIO은 추가 된 각 파일 시스템에 대해 mount-added 신호를 방출합니다. iPod에는 OS 용과 음악 저장 용의 두 가지 파일 시스템이 있습니다. 따라서 반복 콜백. 언 마운트시에도 마찬가지입니다. 이것은 그림자가있는 산마루와는 아무런 관련이 없습니다. 불행히도, 나는 두 마운트 사이를 구별하는 방법을 아직도 모른다. GIO의 유일한 차이점은 GMount 개체 중 하나에 연결된 개체가 GVolume이 아니라는 것입니다. 나는 그것을 해석하는 방법을 모른다.

관련 문제