Linux IPC- 消息队列

SystemV消息队列 为了便于进程之间通信,我们可以使用管道通信 SystemV也提供了一些函数来实现进程的通信.这就是消息队列.

#include <sys/msg.h>

int msgget(key_t key,int msgflg);

int msgsnd(int msgid,struct msgbuf *msgp,int msgsz,int msgflg);

int msgrcv(int msgid,struct msgbuf *msgp,int msgsz,

long msgtype,int msgflg);

int msgctl(Int msgid,int cmd,struct msqid_ds *buf);

 

struct msgbuf {

long msgtype; /*消息类型 */

....... /*其他数据类型 */

} 

msgget函数和semget一样,返回一个消息队列的标志.

msgctlsemctl是对消息进行控制.

msgsndmsgrcv函数是用来进行消息通讯的.

msgid是接受或者发送的消息队列标志.

msgp是接受或者发送的内容.msgsz是消息的大小.

结构msgbuf包含的内容是至少有一个为msgtype.其他的成分是用户定义的.

对于发送函数msgflg指出缓冲区用完时候的操作.接受函数指出无消息时候的处理.一般为0.接收函数msgtype指出接收消息时候的操作.

如果msgtype=0,接收消息队列的第一个消息.大于0接收队列中消息类型等于这个值的第一个消息.小于0接收消息队列中小于或者等于msgtype绝对值的所有消息中的最小一个消息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值