Proc
我可以添加到 /proc/self 嗎?
我想在我的程序中創建一些命名的記憶體區域,並將
mmap
它們放在某個地方,以便其他程序可以讀取它們。我不能保證我的程序一次只能執行一個實例。理想情況下,我想把積木放在下面/proc/self/<blockname>
或類似的地方。這可能嗎?或者還有其他地方可以放置映射文件嗎?(我的程序通常不會以 root 身份執行。)我不想使用
/proc/self/fd
or/proc/self/map_files
,因為這不允許命名它們(據我所知)。
不,您不能以有意義的方式添加您的結構,
/proc
因為它是生成的(不是“真正的”文件系統)。/sys
在某些機器上也是如此。更改 的結構/proc
並不簡單(參見範例*在 /proc 下創建文件夾並在文件夾下創建條目*)。進一步閱讀:
- Linux 文件系統層次結構:第 1 章。Linux 文件系統層次結構:1.14。/proc
- mmap, munmap - 將文件或設備映射或取消映射到記憶體中
- 是否可以在 /proc/sys 中創建目錄和文件?
@mark-plotnick 建議使用 POSIX 共享記憶體,它確實支持names。
進一步閱讀:
- Posix 共享記憶體與映射文件(例如,與 mmap 相比)
- shm_overview - POSIX 共享記憶體概述
- shm_open, shm_unlink - 創建/打開或取消連結 POSIX 共享記憶體對象
(這些是命名對象)的操作
shm_open()
類似於的操作open(2)
。name 指定要創建或打開的共享記憶體對象。對於可移植使用,共享記憶體對象應該由一個形式的名稱來標識*/somename
*;也就是說,一個以空字元結尾的字元串,最多NAME_MAX
包含(即 255 個)字元,由一個初始斜杠組成,後跟一個或多個字元,其中沒有一個是斜杠。