UNIX系统下的NIO watchservice用于sys/classes/gpio文件。

6

是否可以在 /sys/class/gpio/gpioX 设备树中的文件上设置JAVA NIO WatchService以监视更改?

直接在Java内部检测GPIO文件(即GPIO输入)的更改是一个好主意,但我担心不支持。

确认它不被支持(可能是为什么)就已经足够了。


你对此有什么进展了吗?需要更多的信息吗? - Vladislav Kysliy
1个回答

6
Java 7 NIO文件监视器在Linux上使用inotify实现。Inotify是Linux内核子系统,用于通知文件系统更改。它有限制,并且不能在/proc、/sys和网络共享上工作。请阅读维基百科上的inotify限制

Inotify会报告sysfs和procfs中的一些事件,但不是全部事件。

通过inotify进行通知需要内核知道所有相关的文件系统事件,这对于像NFS这样的网络文件系统并不总是可能的,在这种情况下,一个客户端所做的更改不会立即广播到其他客户端。

还有一些额外的信息:

inotify缺少事件
Java WatchService无法在某些文件夹上工作
Java WatchService在监视映射驱动器时不生成事件


这真的很有趣。我本以为它在/proc和/sys等地方不起作用,但我希望网络文件系统能够实现它,只要协议允许。 - Hakanai
@Trejkaz 很遗憾,但这是事实。Kernel 无法控制网络文件系统。顺便说一下:我已经改进了我的答案。 - Vladislav Kysliy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接