I have a GPIO pin, that value of which is represented in the sysfs node /sys/class/gpio/gpioXXXX/value
) and I want to detect a change to the value of this GPIO pin. According to the sysfs documentation you should use poll(2) or select(2) for this.
However, both poll
and message
only seems to be available as a system calls and not from bash. Is there some way to use to get triggered by a state change of the GPIO pin functionality from a bash script?
My intention is to not have (semi-)busy waiting or userland polling. I would also like to simply do this from bash without having to dip into another language. I don't plan to stick with bash throughout the project, but I do want to use it for this very first version. Writing a simple C program to be called from bash for just this is a possibility, but before doing that, I would like to know if I'm not missing something.
poll()
isn't directly available without using external software (or writing a loadable module for bash adding an additional built-in command). – Charles Duffypoll()
, but if this gpio value is visible at the filesystem level, mighttail -F
send the change to stdout? If so, a super simple solution like this might do. – ghotipoll()
doesn't work for GPIO without non-default flags. – Charles Duffy