【发布时间】:2011-01-24 20:59:07
【问题描述】:
我目前正在做一个项目,以在插入 USB 设备时运行用 C 编写的程序。这可以通过 udev 规则实现吗?
我目前已经让它在我插入设备时运行 Hello World 脚本。但是,它不止一次运行它。
当前路径:/etc/udev/rules.d/98-local.rules
当前规则:
SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/local/bin/USB.sh"
脚本路径:/usr/local/bin/USB.sh
脚本:
#!/bin/bash
echo 'Hello World!' >>"/home/<username>/Desktop/udev.out"
exit
我已经尝试过这样的方法来让可执行文件运行:
#!/bin/bash
usr/games/blackjack
exit
在终端中输入 usr/games/blackjack 有效,但插入 USB 设备时无效。但是,我知道脚本正在运行,因为我已经将它们组合在同一个文件中,并且已经创建了 hello world。
我也尝试过从我的用户帐户运行可执行文件,如下所示:
SUBSYSTEMS=="usb", ACTION=='add", RUN+="/bin/su tyler -c '/usr/local/bin/USB.sh'"
但是,这也不起作用。
是设备权限的问题还是无法运行可执行文件?
*注意:我已广泛阅读 http://reactivated.net/writing_udev_rules.html 的 udev 规则说明。
【问题讨论】:
-
如何测试程序是否运行?
-
嗯,我想要一个交互式程序以这种方式启动,所以在这个游戏的情况下,它会启动并且我可以玩它。我已经花了大约 10 多个小时,我开始认为这是不可能的。
-
你的两个 bash 脚本在 shebang (`#!/bin/bash
). That probably doesn't matter in this case (the scripts will be invoked with the default/bin/sh`) 前面都有一个额外的空间,但你应该修复它。
标签: linux ubuntu executable udev