首先,你得先定义一个消息队列的缓存结构,
然后消息队列里我觉得最重要的函数是以下几个:
第一:创建和打开消息队列:
msg_id=msgget(消息队列的名字,IPC_CREAT|0666);
第二:把消息添加到消息队列里面去:
msgsnd(msg_id,&消息缓存,sizeof(要放数据的字节大小),0);
第三:把消息从消息队列中取出来一个:
msgrcv(msg_id,&消息缓存,sizeof(要取数据的字节的大小),0,IPC_NOWAIT);
第四:把消息队列清除:
msgctl(msg_id,IPC_RMID,0);
对于当中信号量做一个解析:
IPC_NOWAIT 没有消息立刻返回;
IPC_RMID:从内核中删除。
然后,还对消息队列的大小做了测试:
linux下消息队列的最大容量是16384个字节,也就是16k,然后单个消息的最大字节数是8192个字节
linux下最多能支持16个消息队列。