Linux 下的消息队列的使用 SUNNY
MAN 一、消息队列的基本概念 消息队列 (也叫做报文队列)是 Unix系统 V版本中进程间通信机制之一
消息队列就是一个消息的链表
就是把消息看作一个记录,并且这个记录具有特定的格式以及特定的优先级
对消息队列有写权限的进程可以按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读出消息
Linux采用消息队列的方式来实现消息传递
这种消息的发送方式是:发送方不必等待接收方检查它所收到的消息就可以继续工作下去,而接收方如果没有收到消息也不需等待
新的消息总是放在队列的末尾,接收的时候并不总是从头来接收,可以从中间来接收
消息队列是随内核持续的并和进程相关,只有在内核重起或者显示删除一个消息队列时,该消息队列才会真正被 删除
因 此 系统中记录消息队列的数 据 结 构 (struct ipc_ids msg_ids)位 于 内核中,系统中的所有消息队列都 可以在结 构 msg_ids中中找 到访 问 入 口
IPC标 识 符 :每 一个 I P C目 标 都 有一个唯一的 I P C标 识 符
这里 所指 的 I P C目 标 是指 一个单 独 的消息队列、一个信号量集或者一个共享的内存段
系统内核使用此 标 识 符 在系统内核中指 明 I P C目标
IPC 关键字:想要获得唯 一的标 识 符 ,则必须使用一个 I P C关键字
客户端进程和服务器端进程必须双方都 同意此 关键字
这是建立一个客户机/服务器框架的第一步
一般情况下,可以使用ftok ( )函数 为客户端和服务器端产生关键字值
#include #include key_t ftok( const char * fname, int id ) fname就 是 你 指 定 的 文 件 名 ( 已 经 存 在 的 文 件 名 ), 一 般 使