共有メモリシステムのV
#include <sys/types.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
作成:共有メモリとの関連プロセス
-
key_tのキー:非ゼロ桁の16進数。
それを設定するには、2つの一般的な方法があります。
最初:関数呼び出しfotk
第II章:直接使用IPC_PRIVATE
-
サイズ:共有メモリサイズ
-
shmflg:
- IPC_CREAT
- IPC_EXCL
- ユーザ、ユーザのグループは、このメモリシートに他のユーザの権限は、9ビット、664のような表現します
-
戻り値:共有メモリのこの識別番号の成功を返し、失敗は-1を返し、errnoが設定されています。
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
- shmidを:関数の戻り値であるたshmgetたshmget機能によって作成されました
- shmaddr:
- NULL:カーネルメモリ空間を適用します
- 非NULL:自己使用のmallocは、共有メモリshmidをのためのスペースを開くと、このアドレスを関連付けます。4Kのない複数の場合は、カーネルが上下に調整したりします。
- shmflg:
- SHM_RND:読み込みと書き込み
- SHM_RDONLY:読み取り専用
- 戻り値:
- 成功:メモリアドレスを返します。
- 失敗:リターン(ボイド*)-1
#include <sys/types.h>
#include <sys/shm.h>
int shmdt(const void *shmaddr);
プロセスと共有メモリをキャンセルする協会
- shmaddr:にshmatの戻り値
- 戻り値:0成功、失敗-1、および設定のerrno。
#include <sys/types.h>
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
共有メモリ操作、さまざまな操作のためのより多くのcmdの別の共有メモリ。
- shmidを:関数の戻り値であるたshmgetたshmget機能によって作成されました
- CMD:
- IPC_STAT:状態共有メモリを取得
- IPC_RMID:(削除された共有参照カウントが0になるメモリ)共有メモリタグを削除
- IPC_SET:共有メモリのプロパティを設定(変更する権限、shmidをを修正する、など)
- 等
- BUF:shmid_ds構造体
- 戻り値:cmdはIPC_RMID時間である:0成功、失敗-1、およびエラー番号
[]コマンドIPCSは、共有メモリのステータスを表示することができ
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00007fff 65536 ys 664 256 0
0x00007ffe 98305 ys 664 256 0
0x0000555e 131074 ys 664 256 0
0x00000011 229379 ys 664 256 3
- キー:最初の引数に指定たshmget
- shmidを:関数の戻り値たshmget
- 所有者:ユーザーが作成した所属
- パーマ:共有メモリー・アクセス
- バイト:サイズ
- このプロセスを使用して、共有メモリの数:nattch
- 状況:共有メモリの状態