【问题标题】:Linux USB Mapping QuestionLinux USB 映射问题
【发布时间】:2009-12-17 21:14:56
【问题描述】:

我正在开发一个实用程序,可以在 Linux 上自动挂载插入的 USB 记忆棒。我已经绑定到 D-Bus 以接收有关何时插入设备的通知,并且效果很好。但是,我需要确定 /dev 中的哪个设备映射到插入的 USB 记忆棒。我收到 D-Bus 通知,然后使用 pyUSB ( 0.4 ) 扫描 USB 系统。我过滤了 USB_MASS_STORAGE_DEVICE 类,我可以看到已添加或删除的设备。我需要安装此设备,以便查询它的可用空间并将其报告给我们的应用程序,以便我们确定是否存在足够的可用空间,以便我们可以写入数据。

我正在使用 python 来完成这项任务。我不确定我们的目标发行版是什么,只是它至少是 2.6

编辑:我的问题是:如何确定 /dev 中的哪个设备映射到我从 pyUSB 获得的总线设备号。

【问题讨论】:

  • 如何替换插入 U 盘时发生的内置 Linux 挂载操作?

标签: python linux usb dbus


【解决方案1】:

您可能应该就此向 HAL 询问。您说您已经通过 D-Bus 从 HAL 收到通知...它维护 USB 设备列表,以及它们的 ID 和设备名称(block.device 属性)。

这是一个很好的例子,说明如何获取设备文件名以及新 USB 设备的通知:How can I listen for 'usb device inserted' events in Linux, in Python?

【讨论】:

  • 完美。正是我想要的。谢谢。
【解决方案2】:

为什么不用"os"模块挂载文件系统:

os.system ("mount ... ")

或者如果你想检查输出使用“popen”:

l = op.popen ("mount ....").readlines()

【讨论】:

  • 我会的,一旦我知道要挂载什么。即 mount 的第一个参数是设备。这就是我想要找出的。
【解决方案3】:

如何使用dmesg 输出来找出设备名称(sdc1 等...)

在 dbus 告诉您有东西插入 USB 后立即使用它。例如,你可以做tail dmesg

【讨论】:

  • 我不喜欢这个解决方案,因为它缺乏“原子性”。这将作为最后的手段,虽然它永远不会让我快乐。
  • 这与以其他方式收听并没有什么不同。这也是监听,只是检查字符串。
猜你喜欢
  • 1970-01-01
  • 2011-11-26
  • 2011-03-30
  • 1970-01-01
  • 2012-07-27
  • 2015-08-24
  • 2019-01-22
  • 2011-07-28
  • 2011-08-07
相关资源
最近更新 更多