【问题标题】:NIO watchservice for UNIX sys/classes/gpio filesUNIX sys/classes/gpio 文件的 NIO watchservice
【发布时间】:2015-05-12 12:21:00
【问题描述】:

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

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

确认它不受支持(也许是为什么)就足够了。

【问题讨论】:

  • 这个运气好吗?您需要更多信息吗?

标签: java nio gpio watchservice


【解决方案1】:

Java 7 NIO FileWatcher 的 linux 实现使用 inotify。 Inotify 是一个用于通知文件系统更改的 linux 内核子系统。它有限制,不适用于 /proc、/sys 和网络共享。请阅读inotify limitations on wiki

Inotify 会报告 sysfs 和 procfs 中的一些但不是所有事件。

通过 inotify 通知需要内核知道所有 相关的文件系统事件,这对于网络来说并不总是可能的 文件系统,例如 NFS,其中一个客户端所做的更改不是 立即广播给其他客户端。

还有更多:

inotify missing events
Java WatchService doesn't work on some folders
Java WatchService not generating events while watching mapped drives

【讨论】:

  • 这很有趣。我认为它不适用于 /proc 和 /sys 之类的东西,但我希望网络文件系统能够在协议允许的情况下实现它。
  • @Trejkaz 这很可悲,但确实如此。内核无法控制网络文件系统。仅供参考:我已经改进了我的答案
猜你喜欢
  • 2013-10-09
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多