多进程在进行通讯时,有时可能需要数据的定向发送。比如进程A向管道文件中写入数据"helloworld",意将"hello"发送给进程B,将"world"发送给进程C,怎么做到呢?这就需要消息队列。
消息队列的特点:
1.消息队列是消息的链表,具有特定的格式:类型+数据。存放在内存中,由消息队列标识符标识。
2.消息队列允许一个或者多个进程写入或读取消息。
3.消息队列可实现消息的随机查询,也可按照类型进行读取。在同一类型上符合先进先出的规定。
API接口:
int msgget((key_t)key,int flag);//创建或获取一个消息队列,返回内核对象的标识符
int msgsnd(int msgid,const void* ptr,int datalen,int flag);//把消息添加到消息队列中
int msgrcv(int msgid,void* ptr,int size,long type,int flag);//从消息队列中获取消息
int msgctl(int msgid,int cmd,struct msgid_ds* buff);//消息队列的控制函数
命令:
ipcs -q 查看消息队列
ipcrm -q msgid 删除消息队列