LinuxシステムV共有メモリー

共有メモリシステムの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
  • 状況:共有メモリの状態

おすすめ

転載: www.linuxidc.com/Linux/2019-07/159636.htm
おすすめ