1.打开或创建消息队列
int msgget(key_t key,int msgflg)
成功:返回消息对列
失败:-1
标志: IPC_CREAT创建新的消息队列,没有与key对应的消息队列的情况下才创建
消息队列的格式struct msgbuf
消息的类型 long mtype
消息数据 char mtext[1]
2.发送消息到消息队列中(写消息)
int msgsnd(int msqid,const void *msgp,size_t msgsz,int msgflg)
消息队列的id 指向要发送到消息 消息的大小 标志
成功:0
失败:-1
3.从消息队列中取消息(读消息)
msgrcv(int maqid,void *msgp,size_t msgsz,long msgtyp,int msgflg)
消息队列的id 存放取到的消息 希望取到的消息的最大长度 消息的类型【0:直接忽略类型,直接取消息队列的第一条消息 >0:取消息队列类型等于msgtype的第一条消息 <0:取类型比msgtyp的绝对值小的或者等于的消息,在这些消息中取最小的那条】
成功:接收到的消息的数据量
失败:-1
4.控制消息队列(删除消息队列)
msgctl
int msgctl(int msqid,int cmd,struct msqid_ds *buf)
消息队列 操作命令 获取内核中的msqid_ds( NULL)
IPC_RMID:用于删除消息队列的标志
成功:0
失败:-1
实例:
进程A:
1.创建消息队列
2.{
获取键盘输入【消息类型+消息数据】
发送消息队列
}
3.进程终止前删除消息队列