我覺得我有與here描述的相反的問題。我有一個進程將數據寫入日誌,我希望第二個進程讀取它,但我不希望第二個進程能夠修改內容。這可能是一個大文件,我需要隨機訪問,所以我使用python的mmap模塊。Python mmap ctypes - 只讀
如果我將mmap創建爲讀/寫(對於第二個進程),那麼使用from_buffer創建ctypes對象作爲mmap對象的「視圖」是沒有問題的。粗略看一下c代碼,看起來這是一個演員,而不是副本,這正是我想要的。但是,如果我使用mmap ACCESS_READ,則拋出一個from_buffer需要寫入權限的異常。
我認爲我想用ctypes的FROM_ADDRESS()方法來代替,這似乎並不需要寫訪問。我可能錯過了一些簡單的東西,但我不確定如何獲取mmap中位置的地址。我知道我可以使用ACCESS_COPY(所以寫入操作在內存中顯示,但不保存到磁盤),但我寧願保持只讀。
有什麼建議嗎?
如果您使用python mmap模塊,爲什麼需要創建ctypes對象? – tMC 2011-06-09 14:44:55
日誌不僅僅是文本,它包括我已經映射到ctypes Structure類的數據結構。所以我會將內存映射到各種結構類型,並使用它來訪問子元素並決定如何處理日誌的不同部分。 – 2011-06-09 14:59:55