linux 消息队列 实例
前言:
? ?消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程
可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。
函数:
1.创建新消息队列或取得已存在消息队列
原型:int msgget(key_t key, int msgflg);
参数:
? ? ?key:可以认为是一个端口号,也可以由函数ftok生成。
? ? ?msgflg:IPC_CREAT值,若没有该队列,则创建一个并返回新标识符;若已存在,则返回原标识符。
? ?? ? ?? ? ????? IPC_EXCL值,若没有该队列,则返回-1;若已存在,则返回0。
2.向队列读/写消息
原型:ssize_t? msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
? ? ? ?? int???????? msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
参数:
? ? ?msqid:消息队列的标识码
? ? ?msgp:指向消息缓冲区的指针,此位置用来暂时存储发送和接收的消息,是一个用户可定义的通用结构,形态如下:
?