如何在Linux上使用Ruby实现实时usb存储检测?

时间:2017-04-21 19:10:27

标签: ruby linux dbus libusb

我认为ruby-dbus可能是正确的解决方案,但是当存储设备连接到Linux机器时,我似乎无法找到任何实时检测的示例。有人有这样的例子吗?

1 个答案:

答案 0 :(得分:1)

您可以采取多种不同的方法 使用Ruby FFI链接到libusb的{​​{3}}。

这样做的好处是libusb支持热插拔通知,因此这可以满足您的需求:
Here's a Ruby implementation I found

来自http://libusb.sourceforge.net/api-1.0/hotplug.html

  

设备热插拔支持

     

如果LIBUSB.has_capability?(:CAP_HAS_HOTPLUG)返回true,则可以使用对设备热插拔的支持。这需要Linux或MacOS上的libusb-1.0.16或更高版本。 Windows支持仍在继续。

     

可以使用{LIBUSB::Context#on_hotplug_event}注册hotplug事件处理程序。然后,您需要致电{LIBUSB::Context#handle_events}以接收任何活动。这可以作为阻塞调用(可能在它自己的线程中)或使用{LIBUSB::Context#pollfds}来检测要处理的任何事件。