Linxu - C进程间通信(预习内容九)

来源:互联网 发布:商标设计软件生成器 编辑:程序博客网 时间:2024/06/10 11:16

发送消息:

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);

       }

 

0 0
原创粉丝点击