2011-09-24 137 views
0

我在Unix中創建一個守護進程,將有一個串行端口「的/ dev/tty01上」獨家訪問。我打算創建一個主 - 從過程的範例,其中有一個主(守護進程)和多個從機。共享內存在Unix的

我想有在「共享內存」裏的奴隸可以訪問結構,並且只有一個作家的記憶,所以我很可能不會需要一個信號量。數據將會相當緩慢地更新,例如每分鐘一次。

我在調查什麼是最好的方法來做到這一點,如果我有共享內存中的結構,我如何保證結構將在內存中連續?這是我必須具備的要求。

謝謝

+0

可能與http://stackoverflow.com/q/7563313/2509 – dmckee

回答

0

共享內存將很難在這種情況下,因爲您需要在主機寫入鎖定的讀者,並保持作家等候時,仍然有讀者。

更容易將有高手寫一個臨時文件(在同一目錄),並將其重命名爲最終名稱一旦準備就緒(重命名爲原子)。 這是假定客戶定期open()和FSTAT()要檢查的文件,如果它是自上次讀感動。另一種方法是避免文件,並讓主人維護自己的內部數據結構並打開一個(監聽)套接字,open()只是將其當前所有的數據吐出。不需要鎖定。

+0

相關這不會通過網絡,套接字的想法仍然工作?所有的奴隸實際上都會在本地系統上運行來自其他用戶的程序。你有沒有類似於這個想法的例子或白皮書? – zacharoni

+0

你可以使用Unix套接字? –

+0

當然可以。什麼都可以... – wildplasser