2015-05-12 14 views
6

Ist es möglich, den JAVA NIO WatchService auf Dateien in der /sys/class/gpio/gpioX Gerätestruktur einzustellen, um Änderungen dort zu überwachen?NIO-Watchservice für UNIX sys/classes/gpio-Dateien

Es wäre eine gute Idee, Änderungen an den GPIO-Dateien (d. H. Den GPIO-Eingängen) direkt aus Java zu erkennen, aber ich befürchte, dass dies nicht unterstützt wird.

Eine Bestätigung, dass es nicht unterstützt wird (und vielleicht warum) wäre ausreichend.

+0

Glück gehabt mit diesem? Brauchen Sie weitere Informationen? –

Antwort

4

Die Linux-Implementierung des Java 7 NIO FileWatcher verwendet inotify. Inotify ist ein Linux-Kernel-Subsystem, um Dateisystemänderungen zu bemerken. Es hat Einschränkungen und funktioniert nicht auf/proc,/sys und Netzwerkfreigaben. Bitte lesen Sie inotify limitations on wiki:

Inotify meldet einige, aber nicht alle Ereignisse in sysfs und procfs.

Mitteilung über inotify erfordert den Kernel bewusst alle relevanten Dateisystem Ereignisse zu sein, die für vernetzte Dateisystemen wie NFS nicht immer möglich ist, wo von einem Client vorgenommenen Änderungen sind nicht sofort an andere Clients übertragen.

und ein bisschen mehr:

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

+0

Das ist ziemlich interessant. Ich dachte, dass es nicht mit Dingen wie/proc und/sys funktionieren würde, aber ich würde erwarten, dass Netzwerk-Dateisysteme es implementieren können, vorausgesetzt das Protokoll erlaubt es. – Trejkaz

+0

@Trejkaz es ist traurig, aber wahr. Kernel kann Netzwerk-Dateisystem nicht steuern. Zu Ihrer Information: Ich habe meine Antwort verbessert –