2015-06-27 34 views
0

我有一個Linux守護進程,即生成一些數據。該守護程序不時更新該數據。爲了簡單起見,可以說我們只有一個字節。現在我希望其他進程能夠訪問這些數據,而且最簡單的方法(至少對我來說)要做的是擁有某種文件中介。Linux:FIFO文件和設備驅動程序之間的東西

問題是我想從多個進程(或無)和守護進程讀取異步數據以更新該文件的內容。

可能有一個文件,從一個進程寫入並從一個或多個進程讀取?是否有一些特殊的文件類型,是爲了這個目的?

p.p.我正在閱讀有關FIFO文件和設備驅動程序,但我不確定,應該使用它們。

+0

您可能需要查看DBus,而不是爲自己破解進程間同步和消息傳遞協議。 –

回答

0

什麼?您的要求沒有充分陳述。

首先,阻止讀者在更新數據時看到數據?

一個可能的事情是建議諮詢文件鎖定(支持共享和獨佔模式)。閱讀關於羊羣。

另一個標準的解決方案是創建一個新文件,然後重命名(2)它到舊的。該操作是原子的。

設法打開舊文件的讀者當然會讀取您的舊數據,但是您還沒有提供任何同步,因此無論如何它本身都是活潑的。 (事實上​​,即使鎖定也可能足夠活躍。)讀取進程每次打開文件並讀取並關閉文件,每次他們想要獲取新數據時。

也可以通過hack來獲取文件,以查看inode中的鏈接數。如果它爲0,則知道該文件已被刪除並且有更新。如果小丑硬鏈接舊文件,則會出現問題,因爲這會讓您錯過更新。

相關問題