日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IPC之——消息队列

發(fā)布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IPC之——消息队列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

消息隊列作用:

  可以用于兩個沒有聯(lián)系的進程間通信,創(chuàng)建一個消息隊列類似于打開了一個文件,兩個不同的進程都可以進行操作

消息隊列之函數(shù)介紹:

頭文件:<sys/type.h> <sys/ipc.h> <sys/msg.h>

1.msgget(key_t,int msgflg)://創(chuàng)建消息隊列  返回值為消息隊列ID號

  key_t:鍵值,內(nèi)核通過key來生成消息隊列(如0333,055等),當(dāng)設(shè)置成IPC_PRIVATE時為私有鍵,key為0,默認(rèn)創(chuàng)建一個新的消息隊列

  msgflg:IPC_CREAT或IPC_EXCL,以及權(quán)限,如(msgid=msgget(033,IPC_CREAT|0600)

2.msgctl(int msqid,int cmd,struct msqid_ds *buf)
  cmd:IPC_STAT(查看消息隊列信息) ? ,IPC_RMID(刪除一個消息隊列)

  buf:是一個結(jié)構(gòu)體,根據(jù)cmd而考慮加什么參數(shù),如果是刪除可以寫NULL,如果是獲取信息就寫一個結(jié)構(gòu)體變量

3.msgsnd(int msqid,const void *msgp,size_t msgsz,int msgflag)//發(fā)送消息,成功返回0,失敗返回-1

  msgp:可以將消息封裝成一個結(jié)構(gòu)體,也可以是以一個數(shù)組,但是前八為必須是消息類型

  msgsz:消息長度指有效數(shù)據(jù),不包括type;

  msgflag:IPC_NOWAIT,消息滿時不阻塞 ,立即返回

      0:無要求,滿時阻塞

4.msgrcv(int msgid,void *msgp,size_t msgsz,long msgtyp,int msgflg)//接收消息

  msgp:同上,可以是結(jié)構(gòu)體也可以是數(shù)組

  msgsz:消息的數(shù)據(jù)長度,不包括type

  msgtyp:表示取的消息類型:

    0:表示取第一個消息

    num:表示取消息類型為num的消息(num為正整數(shù))

    -num:如(-4),表示取type<=4(-4絕對指)消息,如果有多個成立的消息,從小到達(dá),從        前到后取。。。作用(用于優(yōu)先級別的控制)

  msgflg: 0表示無特殊操作選項

      IPC_NOWAIT:非阻塞

?

轉(zhuǎn)載于:https://www.cnblogs.com/edan/p/8900444.html

總結(jié)

以上是生活随笔為你收集整理的IPC之——消息队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。