gpt4 book ai didi

java - JNotify 无法识别 Linux 系统更改的文件

转载 作者:行者123 更新时间:2023-12-01 04:32:37 25 4
gpt4 key购买 nike

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

谢谢

最佳答案

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

另一种解决方案是创建一个采样线程来检查文件、 sleep 并再次检查文件。由于您只关心特定文件,因此这非常简单。

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

关于java - JNotify 无法识别 Linux 系统更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com