Linux下进程间通讯-消息队列《一》

开发环境

Red Hat Enterprise Linux Server release 7.0 (Maipo)

参考书籍

《UNIX环境高级编程》

关于消息队列知识的编程应用:

https://blog.csdn.net/qq_42418668/article/details/95192660

消息队列

消息队列时消息的链接表,存放在内核中并由消息队列标识符标识。

我们都知道每个运行的进程都有4G虚拟进程空间,其中包括3G的用户空间1G的内核空间,内核空间是每个进程共享的空间。所以进程间的通讯便可以在内核空间“做文章”。即所谓,进程是独立的,必须要共享一些资源才可以通讯。

使用消息队列,进行进程间的通讯的理论基础就是不同进程可以访问同一内核对象

消息队列可以将共享数据和类型一一对应起来,可以保证将特定类型的数据发送给特定的进程,从而保证了进程间通讯的有效性。

相关API的调用

msgget用于创建一个新队列或打开一个现存的队列。msgsnd将新消息添加到队列尾端。msgrcv用于从消息队列中取消息。

 

若执行成功,msgget返回非负队列ID。此后,该值就可用于其他三个消息队列函数。

msgctl函数对队列执行多种操作,它和另外俩个信号量和共享存储有关的函数(semctl和shmctl)是XSI IPC的类似于ioctl的函数。(垃圾桶函数)

删除内核对象

     int msgctl(int msgid,int cmd,struct msgid_ds *buff);

ctl设置函数(修改,删除)

cmd:IPC_RMID

使用命令查看消息队列状态

ipcs -q 查看消息队列

ipcrm -q msqid删除消息队列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值