发送消息:
include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgsnd(int msqid,struct msgbuf*msgp,int msgsz(大小),int msgflg)
功能:向消息队列中发送一条消息。
msqid
已打开的消息队列id
msgp
存放消息的结构
msgsz
消息数据长度
msgflg
发送标志,有意义的msgflg标志为IPC_NOWAIT,指明在消息队列没有足够空间容纳要发送的消息时,msgsnd是否等待。
消息格式:
struct msgbuf
{
long mtype;/*消息类型*/
char mtext[1]; /*消息数据的首地址*/
}
接受消息:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg)
功能:从msqid代表的消息队列中读取一个
msgtyp类型的消息,并把消息存储在msgp指向
的msgbuf结构中。在成功地读取了一条消息以
后,队列中的这条消息将被删除。
int read_message(int qid,long type,struct mymsgbuf*qbuf)
{
int result,length;
length=sizeof(struct mymsgbuf)- sizeof(long);(将消息类型减去)
if((result=msgrcv(qid,qbuf,length,type,0))==-1)
return(-1);
return(result);
}
Linxu - C进程间通信(预习内容九)
最新推荐文章于 2017-11-28 19:14:42 发布