C++下shm共享內(nèi)存模塊

      網(wǎng)友投稿 1006 2025-03-31

      我的第一個服務(wù)器項目分了前后端,而其中前后端的數(shù)據(jù)通訊就是使用shm共享內(nèi)存的方式,所以對于這塊會比較有感覺。

      1、共享內(nèi)存是在多個進程之間共享內(nèi)存區(qū)域的一種進程間的通信方式。

      2、它是在多個進程間通過對指定內(nèi)存段進行映射實現(xiàn)內(nèi)存共享的。

      3、這是IPC最快捷的方式,因為它沒有中間商賺差價。

      4、多個進程間共享的是同一塊物理空間,僅僅是掛載地址不同而已,因此不需要進行復制,可以直接使用這段空間。

      1、創(chuàng)建共享內(nèi)存函數(shù)shmget()

      /*shmget函數(shù)用于創(chuàng)建一個新的內(nèi)存段,或者打開一個原有的內(nèi)存段*/ #include #include int shmget(key_t key,size_t size,int shmflg);

      1

      2

      3

      4

      參數(shù)釋義:shmflg取值范圍:IPC_CREAT、IPC_EXCL

      2、共享內(nèi)存掛載到進程下函數(shù)shmat()

      //該函數(shù)用于將開辟好的共享內(nèi)存掛載到本進程名下 #include #include void *shmat(int shmid,const void *shmaddr,int shmflg);

      1

      2

      3

      4

      參數(shù)釋義:

      shmid:上面那個函數(shù)的返回值。

      shmaddr:一般放0,系統(tǒng)就會自己去找一塊為映射的地址。

      3、斷開共享內(nèi)存連接函數(shù)shmdt()

      //從進程中刪除共享內(nèi)存與從內(nèi)核中刪除共享內(nèi)存是兩個概念 #include #include int shmdt(const void *shmaddr);

      1

      2

      3

      4

      4、共享內(nèi)存控制函數(shù)shmctl()

      #include #include int shmctl(int shmid,int cmd,struct shmid_ds *buf);

      1

      2

      C++下shm共享內(nèi)存模塊

      3

      參數(shù)釋義:

      cmd:IPC_STAT:獲取內(nèi)存段的shmid_ds結(jié)構(gòu),用buf傳出。

      IPC_SET:設(shè)置內(nèi)存段中的shmid_ds結(jié)構(gòu)下的ipc_perm成員的值,從buf里面獲得。

      IPC_RMID:標記某個內(nèi)存段,已備刪除。(只有當連接該內(nèi)存段的最后一個進程與他斷開連接之后才會執(zhí)行刪除)

      struct shmid_ds { struct ipc_perm msg_perm; //后面寫 size_t shm_segsz; //段大小,以字節(jié)為單位 time_t shm_atime; //最后掛載時間 time_t shm_dtime; //最后卸載時間 time_t shm_ctime; //最后修改時間 pid_t shm_cpid; //建立者 pid_t shm_lpid; //最后一個at/dt操作的進程PID shmatt_t shm_nattch; //現(xiàn)掛載數(shù)量 ··· } //下面這個是關(guān)鍵 struct ipc_perm { key_t key; //鍵值 uid_t uid; gid_t gid; //用戶GID uid_t cuid; gid_t cgid; //建立者GID unsigned short mode;//權(quán)限 unsigned short seq; //序列號 }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      我的服務(wù)器shm模塊

      提取碼:r3ne

      C++ 任務(wù)調(diào)度

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:word2013表格畫筆使用技巧(word表格怎么用畫筆)
      下一篇:word里excel為什么有行輸入不了(excel輸入行沒有了)
      相關(guān)文章
      亚洲а∨天堂久久精品| 亚洲精品动漫人成3d在线| 国产AV无码专区亚洲AWWW| 亚洲国产精品一区二区三区久久 | 久久亚洲国产午夜精品理论片| 亚洲无码日韩精品第一页| 亚洲国产精品日韩专区AV| 少妇亚洲免费精品| 全亚洲最新黄色特级网站 | 亚洲高清日韩精品第一区 | 深夜国产福利99亚洲视频| 99亚洲男女激情在线观看| 久久亚洲中文无码咪咪爱| 亚洲AV无码国产一区二区三区| 亚洲高清成人一区二区三区| 国产亚洲Av综合人人澡精品| 亚洲国产成人精品久久久国产成人一区二区三区综 | 伊人久久大香线蕉亚洲| 亚洲另类激情综合偷自拍图| 亚洲国产成人片在线观看无码| 久久青青成人亚洲精品| 伊人久久综在合线亚洲2019| 91嫩草私人成人亚洲影院| 在线观看亚洲人成网站| 亚洲国产综合第一精品小说| 国产色在线|亚洲| 亚洲国产欧美日韩精品一区二区三区 | 亚洲Av综合色区无码专区桃色| 亚洲久本草在线中文字幕| 亚洲精品美女在线观看| 亚洲成a人片在线观| 亚洲国产视频久久| 亚洲av午夜电影在线观看| 偷自拍亚洲视频在线观看99| 国产亚洲精品拍拍拍拍拍| 亚洲狠狠综合久久| 2020国产精品亚洲综合网 | 亚洲ⅴ国产v天堂a无码二区| 亚洲美免无码中文字幕在线| 激情五月亚洲色图| 日韩亚洲精品福利|