私のプログラムで名前付きメモリ領域をたくさん作成し、他の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)
答え2
いいえ。カーネルはプロセスではなく、その中に何があるかを決定します。 (それはあなたが尋ねる質問ではありません。他のプロセスはあなたのプロセスを見ることができません。)/proc/PID
/proc/PID
/proc/self
/proc/self
プロセスが自分のデータを転送する必要がある場合、この情報を保存する一般的な場所は、管理者が開始/var/run
したプロセス(システムサービスなど)の場合は下、ユーザーが/tmp
開始したプロセスの場合はユーザーのホームディレクトリです。ホームディレクトリはコンピュータ間で共有できるため、通常はプロセス関連情報を保存するのには適していません。最新のLinuxシステムにもあります。 1つを選択し、ディレクトリまたは1234がPIDであるような規則を定義します。プロセスが終了すると、ディレクトリは削除されます。/run/user/UID
/tmp/myapplication-1234
/run/user/myapplication/1234