C共有メモリー・デモ

データ書き込み処理、データの読み出し処理

プロセスを書きます:

1.たshmget()は共有メモリを取得します。

プロセス空間にマップ2にshmat()は、共有メモリ

3.書き込みデータ

プロセスを読みます:

1.たshmget()は共有メモリを取得します。

プロセス空間にマップ2にshmat()は、共有メモリ

3.データの読み取り

4.にshmdt()は共有メモリ空間は、プロセスマップから解放されます

5. shmctl()共有メモリ削除する
読取処理を

// 
// 2020年2月10日にGXFによって作成されます。
// 

#ifndefのUNTITLED_MAIN_H 
の#define UNTITLED_MAIN_H 

のchar * ftokFilePath = "/Users/gxf/CLionProjects/untitled/main.c"。
int型PROJECT_ID = 10; 

typedefは構造体{ 
    int型の年齢; 
    文字名[50]。
}人; 

#endifの// UNTITLED_MAIN_H
する#include <stdio.hに> 
する#include <SYS / ipc.h> 
の#include <SYS / shm.h> 
の#include <string.hの> 

の#include "main.h" 


int型のmain(){ 
    key_tのftokRes = ftok(ftokFilePath 、PROJECT_ID)。
    人* zhangsan。
    人物リシ= {10、 "リシ"}。

    int型shmidを=たshmget(ftokRes、はsizeof(人)、IPC_CREAT | 0777)。
    printf( "shamidた:%d \ n"は、shmidを); 
    zhangsan =(人*)にshmat(shmidを、NULL、SHM_W)。
    zhangsan->年齢= 20; 
    strcpyの(zhangsan->名、 "zhangsan1111"); 


    0を返します。
}
// 
// 2020年2月10日にGXFによって作成されます。
// 
する#include <stdlib.h>に含ま
する#include <stdio.hに> 
する#include <sysの/ ipc.h> 
書式#include <sysの/ shm.h> 
の#include <string.hの> 

の#include "main.h" 

int型メイン(){ 
    key_tのftokRes = ftok(ftokFilePath、PROJECT_ID)。
    printf( "%dの\ n"は、ftokRes)。
    人* zhangsan =のmalloc(はsizeof(人)); 
    int型shmidを=たshmget(ftokRes、はsizeof(人)、IPC_CREAT)。
    人*は、shmaddr =にshmat(shmidを、NULL、SHM_R)。
    memcpyを(zhangsan、は、shmaddr、はsizeof(人)); 
    printf( "年齢:%dの、名:%sの\ n"は、zhangsan->年齢、zhangsan->名); 
    INT RES =にshmdt(は、shmaddr)。
    RES = shmctl(shmidを、IPC_RMID、NULL); 
    もし(RES)
        fprintfの(stderrに、 "RM IPCS -m失敗"); 


    0を返します。
}

  

  

 

おすすめ

転載: www.cnblogs.com/luckygxf/p/12291505.html