题
我工作上应用程序,以检测是否存储量是装载或卸载。我使用 GIO
为。我听的 mount-added
和 mount-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
对象与它相关联。我不知道如何解释。
不隶属于 StackOverflow