当前位置:  开发笔记 > 编程语言 > 正文

使用C++在Linux中监控磁盘安装的最佳方法?

如何解决《使用C++在Linux中监控磁盘安装的最佳方法?》经验,为你挑选了1个好方法。

我目前正在构建一个Carputer前端,它需要的一个功能是能够识别何时插入外部媒体,例如USB/SD记忆棒或iPod.插入后,我将扫描设备上的音乐/视频/图像并将其添加到媒体库中.或者,我需要知道何时删除这些设备,以便我可以从当前可用的媒体中删除添加的项目.

我的问题是,在使用C++的Linux环境中监视磁盘插入/删除的最佳方法是什么?

我可以监视/ media文件夹,以便Linux自动安装磁盘,但这是完成任务的最佳方法吗?感谢您的任何见解!



1> Alex B..:

您可以从NetLink套接字读取内核uevents.它提供有关设备添加/删除,mount/umount的事件.

- Netlink

监听netlink套接字的守护进程接收每个hotplug事件的数据包,其中包含usermode帮助程序在环境变量中接收的相同信息.

netlink数据包包含一组空终止的文本行.netlink数据包的第一行组合了$ACTION$DEVPATH值,用@(at符号)分隔.第一行之后的每一行包含一 KEYWORD=VALUE对定义hotplug事件变量的行.

[...]

行动

当前的hotplug操作:"添加"以添加设备,"删除"以删除它.2.6.22内核还可以生成"更改","在线","离线"和"移动"操作.

您可能想要监控mountumount操作.请注意,事件不会为您提供设备节点或实际安装点,而只提供设备的sysfs节点.如果设备节点管理和挂载管理由外部进程(例如udev)处理,则必须使用主设备号和次设备号自行找出设备节点和挂载点/proc/mounts.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有