色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 進程間通信之共享內存(一)
進程間通信之共享內存(一)
時間:2016-12-30作者:華清遠見

1.共享內存概述

共享內存允許兩個或更多進程共享一給定的存儲區。因為數據不需要在各個進程之間復制,所以這是快的一種進程間通信方式。使用共享內存時的關鍵點在于如何在多個進程之間對一給定的存儲區進行同步訪問。

例如若一個進程正在將數據放入共享內存區,則在它做完這一操作之前,其他進程不應該去取這些數據。通常,信號量被用來實現對共享內存訪問的同步。

2.函數說明

共享內存的實現分為4個步驟。

第一步是創建共享內存,這里用到的函數是shmget,也就是從內存中獲得一段共享內存區域。 
        第二步是映射共享內存,也就是把這段創建的共享內存映射到具體的進程空間去。這里使用的函數是shmat。 
        第三步是撤銷映射的操作,其函數為shmdt。 
        第四步是刪除創建的共享內存,用到的函數是shmctl。

3.函數格式

以上函數用到的頭文件如下所示。

#include <sys/types.h>
        #include <sys/ipc.h>
        #include <sys/shm.h>

shmget函數的語法

函數原型

int shmget( key_t key, /* IPC_PRIVATE */
        int size, /* 共享內存區大小 */
        int shmflg) /* 同open函數的權限位,也可以用8進制表示法 */

函數返回值

成功:共享內存段標識符 
        出錯:-1

shmat函數的語法

函數原型

char *shmat( int shmid, /* 要映射的共享內存區標識符 */
        const void *shmaddr, /* 將共享內存映射到指定位置(若為0則表示把該段共享內存映射到調用進程的地址空間)*/
        int shmflg) /* SHM_RDONLY :共享內存只讀 
        默認0 :共享內存可讀寫*/

函數返回值

成功:被映射的段地址 
        出錯:-1

shmdt函數的語法

函數原型

int shmdt(const void *shmaddr) /* 被映射的共享內存段地址 */

函數返回值

成功:0 
        出錯:-1

shmctl函數的語法

函數原型

int shmctl(int shmid, /* 要操作的共享內存區標識符 */
        int cmd, /*IPC _RMID : 刪除共享內存 
        IPC_STAT : 獲取共享內存屬性 
        IPC_SET : 設置共享內存屬性 */
        struct shmid_ds *buf) /* 指向保存共享內存屬性的結構體的指針*/

函數返回值

成功:0
        出錯:-1

4.使用實例

首先使用shmget函數,首先創建一個共享內存區,之后將其映射到本進程中,后再解除這種映射關系并刪除創建的共享內存。

這里要介紹的一個命令是ipcs,這是用于報告進程間通信機制狀態的命令,它可以查看共享內存、消息隊列等各種進程間通信機制的情況,這里使用了system函數用于調用命令ipcs,參考代碼如下所示:

/*創建共享內存*/
        int shmid;
        void *shmadd;
        if ((shmid = shmget(IPC_PRIVATE,BUFSZ,0666)) < 0 )
    
        perror(“fail to shmget ”); 
        exit(-1);
    }
        syetem(“ipcs –m”); 
        
/*映射共享內存*/
        if ((shmadd = shmat(shmid,0,0)) == NULL )
    
        perror(“fail to shmat ”); 
        exit(-1);
    }
        syetem(“ipcs –m”); 
        /*刪除共享內存*/
        if (shmdt(shmadd) < 0 )
    {
        perror(“fail to shmdt ”); 
        exit(-1);
    }
        syetem(“ipcs –m”); 
        if (shmctl(shmid, IPC_RMID, NULL) < 0 )
    {
        perror(“fail to shmctl ”); 
        exit(-1);
    } 
        syetem(“ipcs –m”);

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
主站蜘蛛池模板: 最近2018中文字幕2019高清 | 亚洲欧美爱爱 | 麻豆果冻传媒精品国产av | 美女午夜福利4K视频在线观看 | 丰满妇女强制高潮18XXXX | 国产肥白大熟妇bbbb | 无码AV天堂一区二区三区 | 人人妻碰人人免费 | 亚洲av日韩av永久无码久久 | 99青娱乐| 国产精品久久久影视青草 | 99久久久无码国产精品9 | 波多野结衣中文字幕一区二区 | 国产乱人伦AV在线A更新 | 丰满少妇伦精品无码专区 | 成人涩涩涩视频在线观看 | 欧美变态口味重另类在线视频 | 亚洲AV片不卡无码久久wy193 | 97在线影院| 日韩亚洲制服丝袜中文字幕 | VA在线看国产免费 | 成人片免费网站 | 五月香丁激情欧美啪啪 | 国产肥熟女视频一区二区三区 | 成人涩涩网 | 成年视频女人的天堂天天看片 | 伊人精品久久久大香线蕉 | 国产成人精品久久综合 | 18禁黄污无遮挡无码网站 | 日本很黄的吸乳A片 | 最新国产福利在线观看精品 | 亚洲AⅤ久久一区二区三区 亚洲aⅴ综合av国产八av | 老子影院午夜伦手机不卡 | 国产精品久久毛片 | 丰满人妻熟妇乱又仑精品 | 欧美又粗又猛又爽又黄A片 亚洲国产成人va在线观看 | 中国CHAIN同志GAY片国产 | 亚洲中文字幕久久无码精品 | 艳妇乳肉豪妇荡乳XXX | 八区精品色欲人妻综合网 | 卡1卡2卡3精品接入口 |