【问题标题】:Run linux program when two specific USB devices are connected连接两个特定 USB 设备时运行 linux 程序
【发布时间】:2016-07-01 17:27:52
【问题描述】:

可能有 1000 或更多的网络资源来解释如何在连接 USB 设备时运行应用程序。我正在寻找的是一种技术,它可以对存在的 两个 特定设备(它们可以在任何时间以任何顺序连接)进行操作。我考虑过一种方案,其中每个设备都有自己的操作来创建一个不同的临时文件,然后检查其他设备是否创建了它的文件。这看起来很麻烦,并且可能容易出现种族问题。有没有更好的方法来解决这个问题?

【问题讨论】:

  • 为什么不让他们寻找其他设备呢?

标签: linux usb udev


【解决方案1】:

首先,弄清楚如何使用您提到的那些资源连接 USB 设备时触发程序。然后用 C 语言编写一个程序,使用 libusb 或 libudev 检查两个设备是否存在。如果两个设备都找到了,就触发你想要发生的任何动作。

【讨论】:

  • C 可能不需要,具体取决于设备。
  • 当然,任何具有 libusb 和 libudev 可用包装器的语言都可以使用。如果可以通过其他方式检测到您的设备(例如使用ls),您可以这样做。
【解决方案2】:

在较新的 Linux 发行版中,从 udev 规则调用长时间运行的进程是相当困难的,但不考虑这场战斗的细节,我接受了 Davids 的建议。两个 udev 规则调用相同的 Python 脚本,该脚本会检查两个设备并在它们存在时启动应用程序。防止脚本的两个并发实例之间发生竞争需要一些工作,但我最终将 /var/run/myapp 下的文件重命名为互斥锁。仍然需要一个“删除”规则来终止进程,但这是更容易的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2014-10-12
    • 1970-01-01
    • 2014-07-15
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多