【发布时间】:2011-01-05 14:24:09
【问题描述】:
我正在开发一个必须检测存储卷是否已安装或卸载的应用程序。我为此使用GIO。我正在监听mount-added 和mount-removed 信号。当我安装/卸载笔式驱动器时,一切正常。但是,我在安装 iPod 时遇到了问题。我在挂载和卸载时分别收到两个回调。我假设GMount 对象之一是shadowed,但g_mount_is_shadowed 对两者都返回false。我如何决定处理哪个,忽略哪个?我无法同时处理两者。我必须检测与存储设备对应的挂载/卸载并仅处理它。
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);
...
}
【问题讨论】:
-
你试过
volume-added和volume-removed吗? -
我做到了。我看到我只收到 1 个回调。但我不确定我的所有用例(我希望能够检测到所有 storage 设备的添加/删除)并且我想坚持使用
mount-xxx信号,如果只是为了避免大量测试用例。 -
所有存储设备都是Linux上的卷,你真的尝试过吗?
-
Ismail:听起来至少有一个操作系统并非如此。那会是什么,为什么会这样?
-
@user562374 我们在这里讨论的是 Linux。