如何在插入某个设备时自动运行某个程序?

如何在插入某个设备时自动运行某个程序?

我有通过 USB 端口连接的自制设备,并且我编写了一个用于从该设备获取数据的 C++ 程序。我已修改,/etc/udev/rules.d/50-ttyusb.rules以便设备在插入时具有读/写权限。现在我还希望当我插入设备时,我的程序(名为SQM_ver2)会自动运行。我该怎么做?

分配给设备的套接字是ttyACM0。使用 Ubuntu 14.04。

lsusb设备输出:

Bus 003 Device 005: ID ffff:0005

编辑:

我按照@steeldriver 的建议修改了我的规则文件,但没有奏效。请注意,我的程序使用终端窗口输出数据。我一直从终端运行它,但现在它应该自己打开终端。这里我还在/var/log/syslog设备插入时在文件中添加了相关行:

Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.078011] usb 3-1.4: new full-speed USB device number 8 using ehci-pci
Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187324] usb 3-1.4: New USB device found, idVendor=ffff, idProduct=0005
Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187339] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187347] usb 3-1.4: Product: USBSerial
Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187353] usb 3-1.4: Manufacturer: LPCUSB
Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.187359] usb 3-1.4: SerialNumber: DEADC0DE
Jun  1 22:21:04 user-Lenovo-G50-45 kernel: [267790.188792] cdc_acm 3-1.4:1.0: ttyACM0: USB ACM device
Jun  1 22:21:04 user-Lenovo-G50-45 mtp-probe: checking bus 3, device 8: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1.4"
Jun  1 22:21:04 user-Lenovo-G50-45 mtp-probe: bus: 3, device: 8 was not an MTP device

编辑2:

这是我的规则文件现在的样子:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666",RUN+="/usr/bin/gnome-terminal"

有错误吗?SQM_ver2我尝试只打开终端而不是我的程序,但它不起作用。权限设置正确,因此文件50-ttyusb.rules至少在那部分工作正常。此外,查看我的50-ttyusb.rules文件,我认为现在我连接的所有设备以及它们被分配ttyUSBttyACM套接字都将具有读/写权限(并且程序SQM_ver2将启动)。我可能应该问另一个问题,关于如何仅为此设备设置权限(可能应该比较idVendoridProduct?)。

相关内容