gpt4 book ai didi

c++ - 使用 C++ 在 Linux 中监视磁盘挂载的最佳方法?

转载 作者:IT王子 更新时间:2023-10-29 00:19:27 26 4
gpt4 key购买 nike

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

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

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

最佳答案

您可以阅读 kernel uevents from a NetLink socket .提供设备添加/删除、挂载/卸载等事件。

-- Netlink

A daemon listening to the netlink socket receives a packet of data for each hotplug event, containing the same information a usermode helper would receive in environment variables.

The netlink packet contains a set of null terminated text lines. The first line of the netlink packet combines the $ACTION and $DEVPATH values, separated by an @ (at sign). Each line after the first contains a KEYWORD=VALUE pair defining a hotplug event variable.

[...]

ACTION

The current hotplug action: "add" to add the device, "remove" to remove it. The 2.6.22 kernel can also generate "change", "online", "offline", and "move" actions.

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

关于c++ - 使用 C++ 在 Linux 中监视磁盘挂载的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/492916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com