GPIO状态变化触发我有一个GPIO引脚,其价值已在sysfs节点/sys/class/gpio/gpioXXXX/value
)表示,我想检测改变该GPIO引脚的价值。根据the sysfs documentation你应该使用poll(2)或select(2)为此。获得通过在bash
但是,poll
和message
只能用作系统调用,而不能用于bash。有没有一种方法可以用来通过bash脚本中GPIO引脚功能的状态变化来触发?
我的目的是不具有(半)忙等待或用户级轮询。我也想简单地从bash做到这一点,而不必浸入其他语言。我并不打算在整个项目中坚持使用bash,但我确实希望在第一个版本中使用它。编写一个简单的C程序,可以从bash中调用这个功能,但在这之前,我想知道我是否没有错过任何东西。
简称:你不会失去了一些东西;如果不使用外部软件(或者为bash添加一个可加载模块并添加一个内置命令),poll()不是直接可用的。 –
......说,如果表现是主要目标,我可能会建议你考虑放弃bash。这当然可以写更有效的shell脚本比大多数人做的(当然也有更快的炮弹比bash)的,但仍然对如何高性能他们将永远是一个上限,而上限仍然是waaaay低于点担心什么样的中断正在使用是相关的。 –
我没有关于如何使用'poll()'的建议,但是如果这个gpio值在文件系统级别是可见的,那么'tail -F'可能会把这个改变发送到标准输出吗?如果是这样,一个超级简单的解决方案,如[this](http:// stackoverflow。com/a/10958125/1072112)可能会做。 – ghoti