Mmap
mmap():是否可以使用 MAP_SHARED 標誌防止寫回文件?
據我了解, mmap() 中的“MAP_SHARED”標誌立即與其他程序共享程序對記憶體映射所做的任何更改,並最終將更改寫回文件。是否可以與其他程序共享記憶體中的更改但不能將更改寫回文件?它需要一種新型的旗幟嗎?實現這種標誌(例如’MAP_SHARED_NOT_WRITE_BACK)會有多複雜?
=======================================
**補充:**我想到的案例:Process A mmap 是共享庫 foo.so 的程式碼段,並對程式碼進行更改(例如,加密程式碼)。我希望稍後創建其他程序B、C等並使用foo.so共享修改後的程式碼。但是,我不希望將更改寫回foo.so文件。我更喜歡適用於多個程序和許多共享庫的可擴展解決方案。
tl;博士; 您應該使用僅存在於 RAM 中的文件
就像在 Linux 上一樣,是由文件系統返回
memfd_create(2)
或打開文件返回的tmpfs
文件$$ 1 $$. 在這種情況下,記憶體將由交換而不是正常文件或設備支持——如果配置了任何交換。請注意,如果文件很大,這將對您的系統造成壓力並嚴重降低其性能,從而實現零收益。
注意:如果您擔心您的“秘密”會被無意中寫入永久儲存,請更好地了解您的系統有哪些加密儲存解決方案。
$$ 1 $$
shm_open(3)
在 Linux 上通過簡單地打開掛載在 .tmpfs 上的文件來實現/dev/shm
。