<span style="font-size:18px;">使用GVolumeMonitor获取挂载设备的监控</span>
#include <glib.h>
#include <gio/gio.h>static void
do_action(char* cmd)
{g_print("[do_action] start to exec: %s\n", cmd);GError* error = NULL;g_spawn_command_line_sync(cmd, NULL, NULL, NULL, &error);if (error) {g_print("[do_action] exec '%s' failed: %s\n", cmd, error->message);g_error_free(error);}g_print("[do_action] exec done\n");
}static void
handle_volume_changed(GVolumeMonitor* monitor, GVolume* volume, gpointer data)
{char* ev = (char*)data;g_print("[handle_volume_changed] event: %s\n", ev);return;if (g_strcmp0(ev, "volume-removed") == 0) {return;}char* path = g_volume_get_identifier(volume, "unix-device");char* cmd = g_strdup_printf("gvfs-mount -d %s", path);g_free(path);do_action(cmd);g_free(cmd);
}static void
handle_mount_changed(GVolumeMonitor* monitor, GMount* mount, gpointer data)
{char* ev = (char*)data;g_print("[handle_mount_changed] event: %s\n", ev);return;if (g_strcmp0(ev, "mount-removed") == 0) {return;}GFile* root = g_mount_get_root(mount);char* path = g_file_get_path(root);g_object_unref(G_OBJECT(root));char* cmd = g_strdup_printf("gvfs-open %s", path);g_free(path);do_action(cmd);g_free(cmd);
}int
main()
{GVolumeMonitor* monitor = g_volume_monitor_get();g_signal_connect(G_OBJECT(monitor), "volume-added",G_CALLBACK(handle_volume_changed), "volume-added");g_signal_connect(G_OBJECT(monitor), "volume-removed",G_CALLBACK(handle_volume_changed), "volume-removed");g_signal_connect(G_OBJECT(monitor), "mount-added",G_CALLBACK(handle_mount_changed), "mount-added");g_signal_connect(G_OBJECT(monitor), "mount-removed",G_CALLBACK(handle_mount_changed), "mount-removed");g_main_loop_run(g_main_loop_new(0,0));return 0;
}

获取挂载设备的信息 gio相关推荐

  1. /proc/mounts获取挂载设备mntent信息

    前言 /proc文件系统是一个伪文件系统,在系统运行时通过访问内核数据结构.改变内核设置的机制,实现以文件系统的方式与内核数据交互.应用程序可以通过proc文件系统获取系统的信息,利用此功能在一些嵌入 ...

  2. uni-app 获取手机设备各项信息

    uni-app 获取手机各项信息 直接使用uni.getSystemInfo 官方文档:地址 参考代码 我这里的代码经过测试是可以获取到Android设备的信息的 <template>&l ...

  3. Android获取硬件设备详细信息

    此文介绍一些获取Android手机硬件信息的方法 主要是从Build和TelephonyManager中获取 以及使用反射获取SystemProperties 并使用他的get方法获取一些系统隐藏掉的 ...

  4. electron-vue获取电脑设备标识信息

    场景:设备物理标识和账号进行绑定的场景,需要拿到设备的信息 如 mac  address 等: 设备:当前对win10 和 win7 的获取方法进行总结: 台式PC   一体机  笔记本 : 网上的方 ...

  5. 微信小程序获取用户设备的信息

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 可以获取用户的手机型号,手机操作系统,微信版本,屏幕宽高等等. Object wx.getSystemInfo ...

  6. android蓝牙连接耳机分析,如何在android中获取蓝牙耳机设备的信息(特别是耳机设备名称)...

    我终于解决了这个问题 . 以前我从"BluetoothAdpter"类获得了所有绑定设备的"getBondedDevices()"方法 . 但我通过使用&quo ...

  7. Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机设备的各种固件信息如DeviceID或者SerialNumber等(C++)

    项目场景 Baumer工业相机堡盟相机是一种高性能.高质量的工业相机,可用于各种应用场景,如物体检测.计数和识别.运动分析和图像处理. Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分 ...

  8. 实时获取用户所在城市(管理设备位置信息)

    Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度.纬度等.通过plus.geolocation可获取设备位置管理对象.虽然W3C已经提供标准API获取位置信息,但在某些平台存在 ...

  9. Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度、纬度等。通过plus.geolocation可获取设备位置管理对象

    方法: getCurrentPosition: 获取当前设备位置信息 watchPosition: 监听设备位置变化信息 clearWatch: 关闭监听设备位置信息 对象: Position: JS ...

最新文章

  1. html图片显示原始大小,我如何使PHP / HTML图像在单击时显示原始大小?
  2. hadoop 入门实例【转】
  3. C/C++:uint64_t 转为char*
  4. Python中and、or、not用法
  5. Android版Cocos2d-X应用的AnySDK集成Admob管理库教程
  6. python3-matplotlib手册
  7. SAR成像(一):线性调频信号(LFM)和脉冲压缩
  8. ping网络诊断常见故障
  9. python使用selenium大麦网抢票
  10. javascript中关于日期和时间的基础知识
  11. 记一次烧毁AO3400的过程
  12. Android安装步骤
  13. studio 3t 如何链接开启验证的mongodb
  14. jekenis+tomcat部署更新war失败【踩坑日记】
  15. 交易委托账本 order book
  16. iOS7初体验(1)——第一个应用程序HelloWorld
  17. UVA10110-灯光
  18. 如何替换一个Linux内核函数的实现-热补丁原理
  19. C++ 检测程序是否在运行
  20. 不想当空军的开发者,不是好程序员

热门文章

  1. java 修改图片的像素大小,清晰度
  2. 电子器件中电弧产生的原理及灭弧方法
  3. 达美乐和福特想要搞事情,准备用自动驾驶汽车送外卖
  4. JavaWeb-Springboot图片裁剪
  5. 正则表达式(详细了解 )
  6. Java中方法的应用
  7. 游戏行业的个人看法(国内MMORPG,国外SLG)
  8. 图片仿射变换原理与实现
  9. 1213: 不吉利的数字
  10. 650万货车司机背后的独角兽,是怎么修炼信息安全内功的?