一、消息队列:从一个进程向另一个进程发送数据块,读取不一定是先入先出。
管道与消息队列区别:管道基于字节流的,消息队列基于消息;
管道只能发送字符串,消息队列有类型;
管道随进程,消息队列随内核。
二、创建函数原型:int msgget(key_t key, int msgflg); //key由ftok生成,IPC_CREAT|IPC_EXCL
接收消息:ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
发送消息:int msgsnd(int msqid, const void *magp, size_t msgsz, int msgflg) /*
* msqid:消息队列标识码; msgp:指向缓冲区的指针,暂时存储消息;
* msgsz:消息大小; msgtyp:读取的消息形态,0表示消息队列中的消息都会读取
* msgflg:0表示队列满或者空时,采用阻塞等待方式;IPC_NOWAIT表示不做等待,立即返回
*/
struct msgstru
{
long mtype;
char metext[];
}
三、代码实现:
四、实现结果:
原文地址:http://green906.blog.51cto.com/10697569/1764788