linux消息队列

消息队列:

        消息队列是消息的链接表,是存在内核中的,一个消息队列是由一个标识符(ID号)来标识。

特点:

消息队列是一种在进程之间传递消息的通信机制,具有以下特点:

  1. 异步通信:发送消息到消息队列后,发送方可以继续执行其他任务,不需要立即等待接收方处理消息。接收方可以在合适的时候从队列中获取消息并处理。
  2. 解耦:消息队列可以将发送方和接收方解耦,使它们不需要直接知道对方的存在。发送方只需要将消息发送到队列,而接收方可以从队列中获取消息进行处理,双方无需直接通信。
  3. 缓冲:消息队列可以作为一个缓冲区,即使发送方发送消息速度快于接收方处理消息的速度,消息也不会丢失,因为消息会暂时存储在队列中。
  4. 通信方式:消息队列通常支持多对多的通信方式,多个发送方可以向同一个队列发送消息,多个接收方也可以从同一个队列获取消息。
  5. 持久化:有些消息队列系统支持消息的持久化,即使接收方不在线,消息也不会丢失,直到接收方再次上线并处理消息。
  6. 消息优先级:有些消息队列支持消息的优先级,可以根据消息的重要性或紧急程度来处理消息。
  7. 可靠性:一些消息队列系统提供了消息传递的可靠性保证,确保消息能够安全地传递到接收方,避免消息丢失或重复传递。

key的使用:

        

ftok 参数fname:指定的文件名(已经存在的文件名),一般使用当前目录,如:

key_t key;

key = ftok(".", 1); 这样就是将fname设为当前目录。

id:子序号。虽然是int类型,但是只使用8bits(1-255)。

ftok 返回值

成功:返回key_t值(即IPC 键值)

出错:-1,错误原因存于error中

msgget 功能

用于创建一个新的或打开一个已经存在的消息队列,此消息队列与key相对应。

msgget 头文件及原型 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>

msgget 参数key: 函数ftok的返回值(ID号)或IPC_PRIVATE。

msgrcv

msgrcv 功能

从标识符为msqid的消息队列读取消息并存于msgp中,读取后把此消息从消息队列中删除。

msgsnd

将msgp消息写入到标识符为msqid的消息队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值