我工作上应用程序,以检测是否存储量是装载或卸载。我使用 GIO 为。我听的 mount-addedmount-removed 信号。一切正常,当我装载/卸载一笔驱动器。然而,我看到一个问题,当安装一个iPod。我收到两个回调每个上装载和卸载。我假设一 GMount 目的将是 阴影g_mount_is_shadowed 是假返回的两个。我怎么决定哪一个进程和其忽略?我无法处理这两者。我已经检测装载/卸载的相应的储存设备和处理仅如此。

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);
    ...
}
有帮助吗?

解决方案

我已经想出它。 GIO 发射 mount-added 信号,每个文件系统,增加。IPod有两个文件系统--一个为操作系统和一个用于储存的音乐。因此重复回调。同样的情况发生在卸载。这有什么都不做阴影座。不幸的是,我仍然不知道如何区分这两个座。唯一的区别 GIO显示是那一个 GMount 对象没有 GVolume 对象与它相关联。我不知道如何解释。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top