消息队列
1.msgget
作用:创建消息队列
原型:int msgget(key_t key, int msgflag)
参数:key:键值 IPC_PRIVATE
msgflag:权限
返回值:成功:消息队列ID
出错:-1
头文件:sys/tpes.j
sys/ipc.h
sys/shm.h
2.msgsnd
作用:写数据到消息队列
原型:int msgsnd(int msgid, const void *msggp, size_t msgsize, int msgflg)
参数:msggp 消息结构
struct msgtype
{
long msgtype;
char mtext[1];
}
msgsize 消息的字节数
msgflg IPC_NOWAIT 写不进去消息直接返回
0阻塞 一直等待到能写进去消息为止
3.msgrcv
作用:从消息队列中读数据
原型:ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, intmsgflg)
参数:msqid:消息队列的识别码。
msgp:指向消息缓冲区的指针,此位置用来暂时存储发送和接收的消息,是一个用户可定义的通用结构,形态如下
struct msgbuf {
long mtype; /* 消息类型,必须 >0 */
char mtext[1]; /* 消息文本 */
};
msgsz:消息的大小。
msgtyp:消息类型
msgtyp等于0 则返回队列的最早的一个消息
msgtyp大于0,则返回其类型为mtype的第一个消息
msgtyp小于0,则返回其类型小于或等于mtype参数的绝对值的最小的一个消息
4.msgctl
作用:控制消息队列
原型:int msggctl(intmsgid, int cmd, struct msgid_ds *buf)
参数:msgid 消息队列ID
cmd 命令参数IPC_STAT 读取消息队列的数据结构,存储在buf指定的地址中
IPC_SET设置消息队列数据结构msgid_ds中的IPC操作权限
IPC_RMID从系统内核汇总删除消息队列
返回值: 成功 0
出错-1