1

我在 linux 系统 (arm7) 上的一个项目中使用 JNotify。而且效果很好。如果我更改、重命名、删除或创建文件,它会引发中断。但是我想让我们 JNotify 了解 Linux 系统是否自行更改文件。我正在使用 BeagleBone(嵌入式 Linux 系统)。有一个名为 value 的文件,其中包含 InputPin 的状态(高、低)。但是,如果系统更改了此文件,JNotify 将不起作用...如果我自己更改文件,一切正常...有谁知道为什么在第一种情况下无法识别更改。Linux似乎使用一种特殊的方式来写入文件......但我不知道如何......但是如果这个文件发生变化,需要中断我的主循环。还是有其他解决方案?

谢谢

4

1 回答 1

0

JNotify 依赖于来自文件系统的事件。对于 Linux,它使用 inotify 系统调用(这实际上是它的名字的灵感来源)。inotify 仅适用于真实文件,您描述的文件是磁盘上不存在的虚拟文件,不是存储信息的方法,而是访问系统信息并有时更改它的简单方法)。

另一种解决方案是创建一个采样线程,该线程将检查文件、休眠并再次检查文件。因为你只关心一个特定的文件,这很容易。

虽然感觉太贵了,但在直接与硬件打交道时,轮询实际上是很常见的。由于该文件实际上并不是真正的文件,因此读取它实际上比读取文件要快。

于 2013-07-28T18:43:40.243 回答