JNotify不会识别Linux系统更改的文件

时间:2013-07-23 17:53:18

标签: java file interrupt jnotify

我在Linux系统(arm7)上的一个项目中使用JNotify。 而且效果很好。如果我更改,重命名,删除或创建一个文件,它会抛出一个中断。 但是,如果Linux系统自行更改文件,我希望我们通知JNotify。 我正在使用BeagleBone(嵌入式Linux系统)。有一个名为value的文件,其中包含InputPin的状态(高,低)。但是如果系统更改了这个文件,那么JNotify就不行了......如果我自己更改文件,一切都还可以...... 有谁知道为什么在第一种情况下没有认识到这种变化。 Linux似乎使用一种特殊的方式来编写文件......但我不知道如何... 但是如果这个文件发生变化,需要中断我的主循环。 还是有另一种解决方案吗?

由于

1 个答案:

答案 0 :(得分:0)

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

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

虽然它可能感觉太贵,但在直接处理硬件时,轮询实际上非常普遍。 由于该文件实际上并不是真正的文件,因此读取它实际上比读取文件更快。