中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

電腦版瀏覽器在線使用seo網(wǎng)絡(luò)推廣公司報(bào)價(jià)

電腦版瀏覽器在線使用,seo網(wǎng)絡(luò)推廣公司報(bào)價(jià),蘭甘肅網(wǎng)站建設(shè),南縣網(wǎng)站開發(fā)【Linux之進(jìn)程間通信】 項(xiàng)目代碼獲取:https://gitee.com/chenshao777/linux-processes.git (麻煩點(diǎn)個(gè)免費(fèi)的Star哦,您的Star就是我的寫作動(dòng)力!) 06.共享內(nèi)存 共享內(nèi)存是Linux進(jìn)程間的通信方式之一 創(chuàng)建共享內(nèi)存函數(shù)…

?
【Linux之進(jìn)程間通信】

項(xiàng)目代碼獲取:https://gitee.com/chenshao777/linux-processes.git
(麻煩點(diǎn)個(gè)免費(fèi)的Star哦,您的Star就是我的寫作動(dòng)力!)

06.共享內(nèi)存

共享內(nèi)存是Linux進(jìn)程間的通信方式之一

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

int shmget(key_t key, size_t size, int shmflg);
參數(shù)含義
keyIPC_PRIVATE或ftok()函數(shù)獲取
size共享內(nèi)存大小
shmflg權(quán)限

返回值:
成功返回共享內(nèi)存描述符
失敗返回-1

需要包含頭文件

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

共享內(nèi)存和管道一樣
有的共享內(nèi)存只能在親緣關(guān)系的進(jìn)程間通信
有的可以在任意進(jìn)程間通信
這取決于第一個(gè)參數(shù) key


共享內(nèi)存的創(chuàng)建(用于親緣關(guān)系進(jìn)程間)
參數(shù) key 賦值為IPC_PRIVATE,表示用于親緣關(guān)系進(jìn)程
實(shí)例代碼:

#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>/*創(chuàng)建一個(gè)共享內(nèi)存int shmget(key_t key, size_t size, int shmflg);參數(shù):key : 用戶給定的鍵值,IPC對象的名字size: 共享內(nèi)存的大小shmflg: 共享內(nèi)存的權(quán)限返回值:成功返回有效的共享內(nèi)存標(biāo)識(shí)符,失敗返回-1查看內(nèi)核中IPC對象: ipcs -m刪除IPC對象: ipcrm  -m shmid
*/
int main(int argc, char *argv[])
{int shm_id;//創(chuàng)建共享內(nèi)存(親緣進(jìn)程)shm_id = shmget(IPC_PRIVATE, 100, 0777);if(shm_id < 0){printf("共享內(nèi)存創(chuàng)建失敗\n");}printf("共享內(nèi)存創(chuàng)建成功,shm_id = %d\n",shm_id);//查看所有IPC對象system("ipcs -m");//刪除IPC對象char cmd[50] = {0};sprintf(cmd, "ipcrm -m %d", shm_id);system(cmd);//查看所有IPC對象system("ipcs -m");return 0;
}

運(yùn)行結(jié)果(創(chuàng)建內(nèi)存段后再刪除內(nèi)存段):

共享內(nèi)存創(chuàng)建成功,shm_id = 32778------------ 共享內(nèi)存段 --------------
鍵        shmid      擁有者  權(quán)限     字節(jié)     連接數(shù)  狀態(tài)      
0x00000000 32768      hc         600        524288     2          目標(biāo)       
0x00000000 32769      hc         600        524288     2          目標(biāo)       
0x00000000 32772      hc         600        524288     2          目標(biāo)       
0x00000000 6          hc         600        134217728  2          目標(biāo)       
0x00000000 32776      hc         600        524288     2          目標(biāo)       
0x00000000 32778      hc         777        100        0                       
0x00000000 15         hc         600        524288     2          目標(biāo)       
0x00000000 16         hc         600        524288     2          目標(biāo)       
0x00000000 19         hc         600        524288     2          目標(biāo)       ------------ 共享內(nèi)存段 --------------
鍵        shmid      擁有者  權(quán)限     字節(jié)     連接數(shù)  狀態(tài)      
0x00000000 32768      hc         600        524288     2          目標(biāo)       
0x00000000 32769      hc         600        524288     2          目標(biāo)       
0x00000000 32772      hc         600        524288     2          目標(biāo)       
0x00000000 6          hc         600        134217728  2          目標(biāo)       
0x00000000 32776      hc         600        524288     2          目標(biāo)       
0x00000000 15         hc         600        524288     2          目標(biāo)       
0x00000000 16         hc         600        524288     2          目標(biāo)       
0x00000000 19         hc         600        524288     2          目標(biāo)

可以看到通過 ipcs -m 命令獲取到當(dāng)前共享內(nèi)存段中有

0x00000000 32778      hc         777        100        0   

它的鍵值為 0,這表示它只能用于親緣進(jìn)程通信


共享內(nèi)存的創(chuàng)建(任意進(jìn)程間)

參數(shù) key 值通過 ftok(const char *pathname, int proj_id) 函數(shù)獲取
ftok(const char *pathname, int proj_id) 函數(shù)的第一個(gè)參數(shù)是文件路徑,當(dāng)前路徑就可以,第二個(gè)參數(shù)是一個(gè)int類型的值,可實(shí)際上只有8位(1~127)
成功返回Key值,失敗返回-1

示例代碼:

#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>/*創(chuàng)建一個(gè)共享內(nèi)存int shmget(key_t key, size_t size, int shmflg);參數(shù):key : 用戶給定的鍵值,IPC對象的名字size: 共享內(nèi)存的大小shmflg: 共享內(nèi)存的權(quán)限返回值:成功返回有效的共享內(nèi)存標(biāo)識(shí)符,失敗返回-1查看內(nèi)核中IPC對象: ipcs -m刪除IPC對象: ipcrm  -m shmid
*/
int main(int argc, char *argv[])
{int shm_id;int key;key = ftok(".", 1);if(key < 0 ){printf("創(chuàng)建key失敗\n");return -1;}shm_id = shmget(key, 100, IPC_CREAT | 0777);if(shm_id < 0){printf("共享內(nèi)存創(chuàng)建失敗\n");}printf("共享內(nèi)存創(chuàng)建成功,shm_id = %d\n",shm_id);//查看所有IPC對象system("ipcs -m");//刪除IPC對象char cmd[50] = {0};sprintf(cmd, "ipcrm -m %d", shm_id);system(cmd);//查看所有IPC對象system("ipcs -m");return 0;
}

注意的是,shmget函數(shù)第一個(gè)參數(shù)要換為key變量,第三個(gè)參數(shù)要加上IPC_CREAT宏

shmget(key, 100, IPC_CREAT | 0777);

運(yùn)行結(jié)果:

共享內(nèi)存創(chuàng)建成功,shm_id = 32802------------ 共享內(nèi)存段 --------------
鍵        shmid      擁有者  權(quán)限     字節(jié)     連接數(shù)  狀態(tài)      
0x00000000 32768      hc         600        524288     2          目標(biāo)       
0x00000000 32769      hc         600        524288     2          目標(biāo)       
0x00000000 32772      hc         600        524288     2          目標(biāo)       
0x00000000 6          hc         600        134217728  2          目標(biāo)       
0x00000000 32776      hc         600        524288     2          目標(biāo)       
0x00000000 15         hc         600        524288     2          目標(biāo)       
0x00000000 16         hc         600        524288     2          目標(biāo)       
0x00000000 19         hc         600        524288     2          目標(biāo)       
0x01011451 32802      hc         777        100        0                       ------------ 共享內(nèi)存段 --------------
鍵        shmid      擁有者  權(quán)限     字節(jié)     連接數(shù)  狀態(tài)      
0x00000000 32768      hc         600        524288     2          目標(biāo)       
0x00000000 32769      hc         600        524288     2          目標(biāo)       
0x00000000 32772      hc         600        524288     2          目標(biāo)       
0x00000000 6          hc         600        134217728  2          目標(biāo)       
0x00000000 32776      hc         600        524288     2          目標(biāo)       
0x00000000 15         hc         600        524288     2          目標(biāo)       
0x00000000 16         hc         600        524288     2          目標(biāo)       
0x00000000 19         hc         600        524288     2          目標(biāo)

發(fā)現(xiàn)這一行中,鍵值不為0了,代表此共享內(nèi)存可以用于任意進(jìn)程間通信

0x01011451 32802      hc         777        100        0  

key值 具體如何生成?
key 31-24 proj_id 低8位
key 23-16 pathname的st_dev屬性的低8位
key 15-0 pathname的st_ino屬性的低16位

32位組合而成一個(gè)int值,就是我們的ftok的返回值了

http://www.risenshineclean.com/news/48096.html

相關(guān)文章:

  • 免費(fèi)做章子的網(wǎng)站手機(jī)優(yōu)化器
  • wordpress xmlrpc api廣州seo好找工作嗎
  • 安徽炒股配資網(wǎng)站開發(fā)淘寶關(guān)鍵詞怎么做排名靠前
  • 果麥傳媒的網(wǎng)站怎么做的nba排名最新賽程
  • 新農(nóng)村基礎(chǔ)設(shè)施建設(shè)網(wǎng)站國外十大免費(fèi)服務(wù)器和域名
  • 網(wǎng)頁設(shè)計(jì)企業(yè)網(wǎng)站設(shè)計(jì)的功能項(xiàng)目推廣方式有哪些
  • 傳誠信網(wǎng)站建設(shè)營銷失敗案例分析
  • 建個(gè)企業(yè)網(wǎng)站有什么用哪里注冊域名最便宜
  • 網(wǎng)站開發(fā)軟件福州網(wǎng)站優(yōu)化
  • 網(wǎng)站程序結(jié)構(gòu)九江seo
  • wordpress發(fā)布圖片插件網(wǎng)站標(biāo)題seo外包優(yōu)化
  • 在國外做h網(wǎng)站怎么樣百度關(guān)鍵字優(yōu)化精靈
  • 做擦邊網(wǎng)站 服務(wù)器放在狗爹昆明seo優(yōu)化
  • 珠海網(wǎng)站建設(shè)聯(lián)系方式上海關(guān)鍵詞優(yōu)化按天計(jì)費(fèi)
  • 深圳考試培訓(xùn)網(wǎng)站建設(shè)域名解析查詢工具
  • 濱海住房和城鄉(xiāng)建設(shè)局網(wǎng)站網(wǎng)絡(luò)營銷的核心是
  • 中國建設(shè)銀行招聘信息網(wǎng)站6一個(gè)新手怎么做電商
  • 小公司如何做網(wǎng)站隔離直通車推廣計(jì)劃方案
  • 學(xué)會(huì)建網(wǎng)站如何做網(wǎng)絡(luò)營銷友情鏈接的作用大不大
  • 網(wǎng)站開發(fā)的背景百度百科官網(wǎng)
  • 公司網(wǎng)站抬頭用什么軟件做關(guān)鍵詞搜索數(shù)據(jù)
  • 網(wǎng)站開發(fā)簡單的框架營銷云
  • 答題app怎么制作淘寶seo優(yōu)化是什么
  • 大連企業(yè)公司網(wǎng)站建設(shè)百度指數(shù)移動(dòng)版怎么用
  • 校園招聘網(wǎng)站開發(fā)研究背景排名公式
  • wordpress導(dǎo)航菜單404百度seo優(yōu)化軟件
  • 建網(wǎng)站 外貿(mào)微信推廣平臺(tái)哪里找
  • 做網(wǎng)站的IDE百度廣告電話號(hào)碼是多少
  • 酒業(yè)為什么做網(wǎng)站綜合搜索引擎
  • b2c電子商務(wù)網(wǎng)站建設(shè)費(fèi)用河北網(wǎng)站建設(shè)案例