2013-07-23 21 views
1

我在Linux系統(arm7)上的一個項目中使用了JNotify。 它很好用。如果我改變,重命名,刪除或創建一個文件,它會引發中斷。 但是我想讓我們通過JNotify獲得有關Linux系統自身更改文件的信息。 我正在使用BeagleBone(嵌入式Linux系統)。有一個名爲value的文件,其中包含InputPin的狀態(高,低)。但如果這個文件被系統更改了JNotify不起作用...如果我改變了我自己的文件一切都ok ... 有沒有人知道爲什麼變化不承認在第一種情況。 Linux似乎使用一種特殊的方式來編寫文件...但我不知道如何... 但如果此文件更改需要中斷我的主循環。 或者還有其他解決方案嗎?JNotify dosen't辨別由Linux系統更改的文件

感謝

回答

0

JNotify依賴於從文件系統事件。對於Linux而言,它使用inotify系統調用(這實際上是啓發它的名字)。inotify僅適用於真實文件,所描述的文件是一種虛擬文件,它不存在於磁盤上,不是存儲信息的一種方式,而是訪問系統信息的一種簡單方法,有時可以更改它)。

另一種解決方案是創建一個採樣線程,它將檢查文件,睡眠並再次檢查文件。 因爲你只關心一個特定的文件,這很容易。

雖然它可能會感覺太貴,但在直接處理硬件時,輪詢實際上非常普遍。因爲該文件實際上並不是一個真正的文件,讀取它實際上會比讀取文件更快。