
現在、2つの異なるプロセスに同じ共有メモリを提供する方法を知る唯一の方法は、メモリマップファイルを介することです。つまり、どちらのプロセスも同じメモリマップされたファイルを開き、そのファイルからの書き込み/読み込みであるためです。
OSがディスクとメモリを交換する必要があるため、これには不利益/欠点があります。
これが愚かな質問なら事前にお詫び申し上げます。しかし、ファイルによってサポートされておらず、プロセス間に純粋に共有メモリがありますか?それでは、プロセスはメモリマッピングファイルまたは/dev/shmファイルを使用せずにどのようにそれを取得できますか?
答え1
これが愚かな質問なら事前にお詫び申し上げます。しかし、ファイルによってサポートされておらず、プロセス間に純粋に共有メモリがありますか?
これは愚かな質問ではありません!
はい、これがこれを得るための基本的な方法です。 (SYSV) は、shmget
これらの共有メモリバッファを取得するために使用される関数です。文字列名を割り当てます。鍵、他のプロセスはそのキーを使用してshmget
そのキーにアクセスできます。 POSIX方式はshm_open
意味が非常に似ています。セグメントに名前を付けます。この名前はファイル名と似ていますが、一部のハードドライブではサポートされていません。そして、shm_open
同じ名前(互換可能/なしフラグを使用)を使用して後続の呼び出しを行うと、アクセス権が付与されます。同じ記憶に。