私のプログラムで名前付きメモリ領域をたくさん作成し、他のmmap
プロセスが読みやすいようにどこかに配置したいと思います。一度に1つのプログラムインスタンスのみが実行されるという保証はありません。理想的にはブロックを下に配置したいと思います/proc/self/<blockname>
。可能ですか?それとも、マッピングファイルを置く他の場所がありますか? (私のプログラムは通常rootとして実行されません。)
私は(私が知っている限り)名前を付けることができないので、/proc/self/fd
orを使用したくありません。/proc/self/map_files
ベストアンサー1
/proc
いいえ、構造は作成されるため、意味のある方法で追加できません(「実際の」ファイルシステムではありません)。/sys
これは一部のコンピュータでも同様です。変更された構造は/proc
単純ではありません(例を参照)/ procの下にフォルダを作成し、そのフォルダの下にアイテムを作成します。)。
追加資料:
- Linuxファイルシステム層:第1章。 Linuxファイルシステム層:1.14。 /プロセス
- mmap、munmap - ファイルまたはデバイスをメモリにマッピングまたはマッピング解除します。
- /proc/sysにディレクトリとファイルを作成することは可能ですか?
@mark-plotnickはPOSIX共有メモリの使用を提案しました。名前。
追加資料:
- Posix共有メモリとマップされたファイル(例:mmapと比較)
- shm_overview - POSIX共有メモリの概要
- shm_open、shm_unlink - POSIX共有メモリオブジェクトの作成/開く、またはリンク解除
(これらはすべて名前付きオブジェクトタスクは
shm_open()
次のようになります。open(2)
。名前は、作成または開く共有メモリオブジェクトを指定します。移植可能な使用を容易にするには、共有メモリオブジェクトを次の形式の名前で識別する必要があります。/somename
NAME_MAX
;つまり、最初のスラッシュとそれに続くスラッシュではなく、1つ以上の文字を含む最大(つまり255)文字で構成されるnull終了文字列です。 - shm_open - 共有メモリオブジェクトを開く(リアルタイム)(POSIX)